我正在尝试从Debian初始化一个新的GIT仓库(实际上是Virtualbox上的VM,在Mac OS X上安装并运行):
[david@server-VM-001:~ $] mkdir test
[david@server-VM-001:~ $] cd test
[david@server-VM-001:test $] git init
Initialized empty Git repository in /home/david/test/.git/
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
[david@server-VM-001:test (master #) $]
有什么问题?
答案 0 :(得分:26)
正如其他人所指出的,这条消息来自你的shell提示符。问题是在新创建的存储库中HEAD
(.git/HEAD
)指向尚不存在的引用。
% git init test
Initialized empty shared Git repository in /Users/jhelwig/tmp/test/.git/
% cd test
% cat .git/HEAD
ref: refs/heads/master
% ls -l .git/refs/heads
total 0
% git rev-parse HEAD
HEAD
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
看起来正在使用rev-parse
而没有事先进行足够的错误检查。创建第一个提交后.git/refs/heads
看起来有点不同,git rev-parse HEAD
将不再失败。
% ls -l .git/refs/heads
total 4
-rw------- 1 jhelwig staff 41 Oct 14 16:07 master
% git rev-parse HEAD
af0f70f8962f8b88eef679a1854991cb0f337f89
在更新我的shell提示的其余部分(ZSH的wunjo提示主题的大量修改版本)的Git信息的函数中,我有以下内容来解决这个问题:
zgit_info_update() {
zgit_info=()
local gitdir=$(git rev-parse --git-dir 2>/dev/null)
if [ $? -ne 0 ] || [ -z "$gitdir" ]; then
return
fi
# More code ...
}
答案 1 :(得分:7)
在创建新的git项目时,我的终端中有自定义显示时出现此问题(我在路径名之前显示分支显示,例如:/ current / path)。我需要做的就是完成对我的主分支的初始提交,以使此消息消失。
答案 2 :(得分:5)
我通常在Linux机器上使用git,但是在工作中我必须使用Windows。尝试在Windows环境中提交第一次提交时,我遇到了同样的问题。
对于那些仍然面临此问题的人,我可以通过以下方式解决它:
$ git commit --allow-empty -n -m "Initial commit".
答案 3 :(得分:2)
来自Commit 62f162f的看起来正在使用rev-parse而没有在事前进行足够的错误检查
Jeff King (peff
)应该会改善git rev-parse
在Git 1.9 / 2.0(2014年第一季度)中的稳健性(除commit 1418567之外):
对于我们不匹配的情况(例如“
doesnotexist..HEAD
”),我们会尝试将参数视为文件名。
try_difference()
得到了正确的答案,并且在这种情况下始终是免费的 但是,try_parent_shorthand()
永远不会发布,导致错误消息不正确,甚至导致错误结果:
$ git rev-parse foobar^@
foobar
fatal: ambiguous argument 'foobar': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
答案 4 :(得分:0)
我遇到了同样的问题,并在安装了cocoapods之后通过“ pod设置”解决了该问题。
答案 5 :(得分:0)
就我而言,它是克隆深度(我设置为 1
并忘记了它)
Jenkins 正在运行:
git rev-parse 2865c1ce8248de835b5a3fbfcce09e7346d5e3ea^{commit}
(那个提交是 HEAD 后面的几个提交)
当使用 --depth=1
克隆/获取时,我会在运行 git rev-parse
时收到此错误。使用更大的数字(或没有 --depth
)进行克隆时,git rev-parse
工作正常。
这可能与 OP 的命令略有不同,但可能对某人有所帮助。