正如其他人指出的那样,此消息来自您的 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 提示符(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 ...
}