37
user$ sudo git submodule update
fatal: reference is not a tree: a094dcfeeb43fcd62a9e466156e05e7581026f33
Unable to checkout 'a094dcfeeb43fcd62a9e466156e05e7581026f33' in submodule path 'client/src/util'

私は何をしますか?リポジトリから最新のコードのクリーン コピーを取得したいだけです。変更内容が失われてもかまいません。 お分かりのように、何が起こっているのかはっきりとわかりません。ファイルをチェックアウトしようとしているとしか思えません。これは、git がローカル マシン上のファイルのローカル変更を検出したことを意味します。

私は現在OSXを使用しています

4

5 に答える 5

61

これは、サブモジュールで最も一般的な問題です。外部リポジトリで実行中のコミットには、サブモジュール内の誰かがまだプッシュしていないコミットへの参照があります。依存関係の問題です。常に内側から押してください。これはおそらくあなたが間違ったことではなく、リポジトリで作業している他の誰かです。彼らはずさんで、サブモジュールでプッシュを発行するのを忘れて、それを含むリポジトリをプッシュしただけでした。彼らが変更を行い、それらのコミットがそこに存在するため、スタッフは自分のマシンで動作します。それらを平手打ちして、サブモジュールの変更をプッシュするように伝えてください:)

そうしないと、別のマシンで作業していて、サブモジュールの変更をプッシュするのを忘れた場合、それはあなたのせいかもしれません。今、あなたは別の場所にいて、「何が起こっているのか! これらは私の変更であり、ここでも機能するはずだ!」と考えています。

于 2012-11-16T23:38:00.240 に答える
2

Adam Dymitruk と Michael Chinen の回答に加えて、Windows の最大パス長が原因でこの問題が発生しました。Documents/Visual Studio 2013/Projectsディレクトリに3 レベルの深いサブモジュールがある特定のリポジトリを複製しようとすると、fatal: reference is not a tree. しかし、ホーム ディレクトリでまったく同じクローンを繰り返すと、問題なく動作します。

于 2016-02-07T01:41:54.213 に答える
0

ほとんどの場合、サブモジュール リポジトリには、外部リポジトリを参照するリビジョンがありません。また、サブモジュールに指定されたリモートで使用できないか、サブモジュールにリモートが設定されていない可能性もあります。client/src/utilそこに入ってみることができますgit fetch

(なぜそうするsudoのですか?ルートに属している場合、ルートシェルにいないのはなぜですか?そうでない場合、なぜルートに変更するのですか?)

于 2012-11-16T22:26:52.533 に答える