GIT致命:模糊的论点'HEAD':未知的修订或路径不在工作树中

Dav*_*vid 57 git macos virtualbox

我正在尝试从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 #) $] 
Run Code Online (Sandbox Code Playgroud)

有什么问题?

Jac*_*wig 29

正如其他人所指出的,这条消息来自你的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
Run Code Online (Sandbox Code Playgroud)

它看起来像是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
Run Code Online (Sandbox Code Playgroud)

在更新我的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 ...
}
Run Code Online (Sandbox Code Playgroud)

  • 旧版本的 git(至少我知道 1.6.4.4 是这样)不使用 `head` 作为 `HEAD` 的同义词。在我的情况下,我坚持使用这个旧版本的 git,并且能够通过在我的尝试中引用 `HEAD` 而不是 `head` 来解决这个问题。 (3认同)

J.A*_*ler 11

我通常在Linux机器上使用git,但是在工作中我必须使用Windows。尝试在Windows环境中提交第一次提交时,我遇到了同样的问题。

对于那些仍然面临此问题的人,我可以通过以下方式解决它:

$ git commit --allow-empty -n -m "Initial commit".
Run Code Online (Sandbox Code Playgroud)


Ken*_*pek 8

在创建新的git项目时,我在终端中有自定义显示时遇到了这个问题(我在路径名之前显示了分支显示,例如:/ current/path).我需要做的就是完成对我的主分支的初始提交,以使此消息消失.


Ako*_*kom 8

就我而言,它是克隆深度(我设置了1但忘记了)

詹金斯正在运行:

git rev-parse 2865c1ce8248de835b5a3fbfcce09e7346d5e3ea^{commit}
Run Code Online (Sandbox Code Playgroud)

(该提交是 HEAD 后面的一些提交。)

当使用 克隆/获取时--depth=1,我会在运行时收到此错误git rev-parse。当使用更大的数字(或没有--depth)进行克隆时,git rev-parse效果很好。

这可能与OP的命令略有不同,但它可能会对某人有所帮助。