我正在尝试从Debian(实际上是Virtualbox上的VM,已在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)指向尚不存在的引用。

% 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 ...
}

关于macos - GIT致命:模棱两可的参数 'HEAD':未知版本或不在工作树中的路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12267912/

10-12 00:25
查看更多