GIT致命的:模棱两可的说法“HEAD”:未知修订或在工作树路径不(GIT fatal: ambig

2019-06-18 00:56发布

我试图从初始化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 #) $] 

有什么问题?

Answer 1:

正如其他人所指出的,这个消息是从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 ...
}


Answer 2:

在我的终端,具备自定义显示当创建一个新的Git项目,当我有这个问题(我有路径例如之前我分支显示:/电流/路径)。 所有我需要做的就是尽我最初的承诺,我的主分支得到这个消息去了。



Answer 3:

我通常使用我的Linux机器上的git的,但在工作中我使用Windows。 试图去提交在Windows环境中的第一个承诺,当我有同样的问题。

对于仍然面临这个问题,我能够如下解决它:

$ git commit --allow-empty -n -m "Initial commit".


Answer 4:

雅各布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