83

Debianから新しいGitリポジトリを初期化しようとしています(実際には、Mac OS Xにインストールされ実行されているVirtualBox上のVM):

cd ~
mkdir test
cd 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 #) $]

どうしたの?

4

8 に答える 8

39

他の人が指摘したように、このメッセージはシェル プロンプトから来ています。問題は、新しく作成されたリポジトリ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 ...
}
于 2012-10-14T23:16:17.873 に答える
8

新しい Git プロジェクトを作成するときにターミナルにカスタム ディスプレイを表示すると、この問題が発生しました (<branch>:/current/path などのパス名の前にブランチ ディスプレイを表示します)。

私がしなければならなかったのは、このメッセージを消すためにマスター ブランチに最初のコミットを行うことだけでした。

于 2014-04-26T17:47:35.293 に答える
2

Jacob Helwig、彼の回答で次のように述べています。

事前の十分なエラー チェックなしで rev-parse が使用されているようです

Jeff King ( peff)のコミット 62f162fによりgit rev-parse、Git 1.9/2.0 (2014 年第 1 四半期)の堅牢性が向上するはずです(コミット 1418567に加えて):

一致しない場合 (" doesnotexist..HEAD" など)、引数をファイル名として処理しようとします。
try_difference()これを正しく取得し、この場合は常に unmunges します。
ただし、try_parent_shorthand()unmunge は行わないため、誤ったエラー メッセージが表示されたり、誤った結果が表示されたりすることさえあります。

$ 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>...]'
于 2014-01-07T08:40:32.147 に答える
-8

同じ問題があり、 CocoaPodsをインストールした後、「ポッドのセットアップ」で解決しました。

于 2019-08-22T05:54:54.173 に答える