我试图从初始化Debian的(实际上是在VirtualBox的,安装在Mac OS X上运行的虚拟机)的新GIT回购:
[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 #) $]
有什么问题?
正如其他人所指出的,这个消息是从shell提示符下到来。 问题是,在新创建的存储库HEAD
( .git/HEAD
)指向一个尚不存在的Ref。
% 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提示符(wunjo提示主题的zsh重大的修改版本)的其余部分的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 ...
}
在我的终端,具备自定义显示当创建一个新的Git项目,当我有这个问题(我有路径例如之前我分支显示:/电流/路径)。 所有我需要做的就是尽我最初的承诺,我的主分支得到这个消息去了。
我通常使用我的Linux机器上的git的,但在工作中我使用Windows。 试图去提交在Windows环境中的第一个承诺,当我有同样的问题。
对于仍然面临这个问题,我能够如下解决它:
$ git commit --allow-empty -n -m "Initial commit".
雅各布Helwig提到在他的回答是:
它看起来像REV-解析没有足够的错误检查在使用前手
提交62f162f从杰夫王( peff
)应改善的鲁棒性git rev-parse
在GIT中1.9 / 2.0(Q1 2014)(另外的提交1418567 ):
对于那些我们不匹配的情况下(例如,“ doesnotexist..HEAD
”),我们便要尝试把参数作为文件名。
try_difference()
得到这一权利,始终在这种情况下unmunges。
然而, try_parent_shorthand()
从不unmunges,导致不正确的错误信息,甚至是不正确的结果:
$ 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>...]'
文章来源: GIT fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree