私はDebianから新しいGITリポジトリを初期化しようとしています(実際には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 #) $]
どうしたの?
他の人が指摘したように、このメッセージはシェルプロンプトから来ています。問題は、新しく作成されたリポジトリ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 ...
}
新しいgitプロジェクトを作成するときに端末にカスタムディスプレイがあると、この問題が発生しました(パス名の前にブランチディスプレイがあります::/ current/pathなど)。私がする必要があるのは、このメッセージを消すためにマスターブランチに最初にコミットすることだけでした。
通常、Linuxマシンではgitを使用しますが、職場ではWindowsを使用する必要があります。 Windows環境で最初のコミットをコミットしようとすると、同じ問題が発生しました。
まだこの問題に直面している人々のために、私は次のようにそれを解決することができました:
$ git commit --allow-empty -n -m "Initial commit".
Jacob Helwig 言及 彼の答え
事前に十分なエラーチェックなしでrev-parseが使用されているようです
Commit 62f162f from Jeff King(peff
) は、Git 1.9/2.0の _git rev-parse
_ の堅牢性を改善する必要があります( Q1 2014)( commit 1418567 に加えて):
一致しない場合(たとえば、「_
doesnotexist..HEAD
_」)、引数をファイル名として扱います。try_difference()
はこれを正しく行い、この場合は常にunmungesします。
ただし、try_parent_shorthand()
決して解除されず、誤ったエラーメッセージ、または誤った結果になります。
_$ 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>...]'
_
同じ問題があり、cocoapodsをインストールした後、「pod setup」で解決しました。