このようにGitサブモジュールをGitリポジトリに追加すると、
git submodule add ssh://server/proj1/ proj1
git submodule init
git submodule update
追加されたサブモジュールは切り離されたHEADモードになります。それが何であるかはよくわかりませんが、サブモジュールがターゲットリポジトリの特定のリビジョンにリンクされることは知っています。
実際にどのように機能するのかわかりませんが、とにかくプロキシブランチがそこに存在するように見えます。マスターブランチに切り替えることでこれを解決しました。
cd proj1
git checkout master
これにより、現在のブランチの実際のマスターHEADが切り替わりますが、リンケージは更新されません。したがって、リポジトリ全体のクローンを再度作成しても、古いリビジョンにリンクされたままになります。
常に最新のリビジョン(HEAD)にリンクさせたい場合は、どうすればよいですか?
2013年3月の更新
Git 1.8.2 ブランチを追跡する可能性を追加しました。
"
git submodule
"は、リモートブランチの先端と統合する(スーパープロジェクトのgitlinkに記録されたコミットと統合するのとは対照的に)の新しいモードの学習を開始しました。
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
サブモジュールに関するVogellaのチュートリアル も参照してください。
元の回答(2011年12月)
追加されたサブモジュールはデタッチされますHEADモード
はい、サブモジュールは特定のコミットを参照することであり、ブランチではありません。
そう:
master
ブランチで行ったように)、そのブランチの上に他のコミットを作成できます(ただし、親をコミットするには、親リポジトリに戻る必要があります)同様に、作成した新しいサブモジュールコミットを記録する必要があるため)詳細については、「 サブモジュールの本質 "」を参照してください。
別のリポジトリの最新のコミットが常に必要な場合、最も簡単な方法は、それらをマージすることです(たとえば、サブツリーのマージを使用)。
詳細と参照については、「 2つの同じリポジトリGITをマージ "」を参照してください。