OK。だから私はこれをなめたと思った...しかし今....
サブモジュールとしてGitHubの1つの小さなライブラリを含むプロジェクトがあります。そのスーパープロジェクトの元のバージョンでは、サブモジュールは期待どおりに機能しています。
ただし、スーパープロジェクトのクローンを作成し、「git submodule init」を実行して、サブモジュールのディレクトリを表示しましたが、空です。
今やろうとしたら
git submodule update
私は得る
fatal: Needed a single revision
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'
私が試してみると
git submodule foreach git pull
私は得る
Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.
私の.git/configには、これがあります:
[submodule "external_libraries/BEACHhtml"]
url = [email protected]:interstar/BEACHhtml.git
私の.gitmodulesにはこれがあります:
[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = [email protected]:interstar/BEACHhtml.git
誰が何が欠けているのか知っていますか?
現在(2019年)、最新のGITクライアントをインストールすると、以下のコメントに従って問題を解決できるようです。これは今のところ最良のソリューションであるはずです。
私はあなたと同じ問題を抱えています。これはgitのバグです。 http://lists-archives.com/git/785138-git-submodule-update-is-not-fail-safe.html
要するに、あなたの問題のために、試してみてください:
# rm -rf external_libraries/BEACHhtml
# git submodule update
以前のチェックアウトフォルダーに何か問題があるようで、削除し、再度更新すると問題が解決します。
私はこの問題を抱えていました(不安定なネットワークなので、このようにサブモジュールのチェックアウトを落としました)。このスクリプトを作成して解決しました(名前はgit-submodule-fix
なので、git submodule-fix
)
#!/bin/bash
for arg
do
echo $arg
find . -name "`basename $arg`" | grep "$arg\$" | xargs rm -fr
done
これを取得する場合、つまりgit submodule update
fatal: Needed a single revision
Unable to find current revision in submodule path 'some/submodule/path'
行う
git submodule-fix some/submodule/path
git submodule update
2つのディレクトリを削除し、サブモジュールを再取得することで解決しました。
external_libraries/BEACHhtml
に移動し、.git
ファイルを調べます。コンテンツはgitdir: ../../.git/modules/external_libraries/BEACHhtml
のようなものでなければなりませんexternal_libraries/BEACHhtml
ディレクトリと.git/modules/external_libraries/BEACHhtml
ディレクトリの両方を削除します。これからgit submodule update
はエラーなしで実行されます。
プロジェクトのサブモジュールでも同じ問題が発生しました。サブモジュールを個別に複製しようとすると、うまくいきました。
上記のすべての答えを試しましたが、成功しませんでした(gitサブモジュールの更新、...、サブモジュールフォルダーの削除、...)。
Gitを(Git-1.7.11-preview20120710から)最新バージョンに(Git-1.8.1.2-preview20130201に)更新すると、問題はなくなりました。奇妙なことに、私の同僚は古いバージョンさえ持っていて、問題なく働いていましたが、彼らはMacにいました。 Win7 64ビットを使用しています。
diffツールを使用して、動作している元のクローンとこれを比較します。また、git submodule
出力。行う前に、各リポジトリの同じブランチを指していることを確認してください。
サブモジュールが定義されていないブランチまたは古いリビジョンに切り替えたと思われます。
お役に立てれば
2019年以降に読んでいる場合は、gitクライアントを更新するだけです。私のために働いた。