他の人が指摘したように、このメッセージはシェル プロンプトから来ています。問題は、新しく作成されたリポジトリ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
残りのシェル プロンプト (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 ...
}