2012-03-20 7 views
1

裸のレポのサブモジュールで奇妙な問題に直面しています。私は何をしたのかを説明します。サブモジュール裸のレポの問題

私は4つのモジュールを含むレポを持っています。これは次のようになります: *スーパーレポ(トップレベルレポ) - このレポにサブモジュールを追加しました: mod_1、mod_2、mod_3、mod_4(内部サブモジュール) その後、私はこのスーパーレポから裸のレポを作りました。それをsuperepoと呼んでください。

今、私はこの裸のレポを使って、さまざまなpplで物を共有しています。

私は〜/ cloneというディレクトリにすべてのサブモジュールとともに裸のレポをクローンしました。 (gitクローン - 再帰的〜/ Superepo.gitクローン)。 クローンサブモジュール(mod_1とmod_2)のいずれかで何かを修正しました。私はこれらの変更をそれぞれのサブモジュールにコミットしました。私はsuperepoのクローンに変更を加えました。 (〜/クローン)

そして、私は裸のsuperepoに "git push〜/ superepo"を使って変更を加えました。

他の誰かが裸のレポをクローンしようとしました。しかし、次のようなエラーが表示されます。 - >
fatal:参照がツリーxyz(xyz = sh1 of mod_1 commit) サブモジュールパスmod_1でxyzをチェックアウトできません。

私は私が間違っていた可能性がある無知のようなものです。裸のレポやスーパーモジュールに何か問題がありますか?

答えて

2

サブモジュールで行った変更をサブモジュールの元のrepoにプッシュする必要があります。現時点では、サブモジュールの更新を行い、その更新を見るために囲みレポを更新しましたが、新しいクローンについては、それをサブモジュールレポにプッシュしていないため、その更新を知らないでしょうあなたがクローンするときに見える。

+0

あなたの意見は分かりません。私が間違っているステップを提案してください:Step_1:私は自分のクローンに変更をコミットしました。 (〜/クローン/ mod_1と〜/クローン)。 Step_2:その後、この更新クローンから裸のレポに変更をプッシュしました。 Step_3:誰かがこの更新された裸のレポをクローンしました。だから、この裸のレポのチャネージがこの新しいクローンに反映されるべきであるという私の理解に達しました。または、私はgitについてここでいくつかの非常にimpのコンセプトを見逃しているかもしれません。 –

+1

'(cd mod_1; git push ...)と'(git push ...)の2つのプッシュステップが必要です。そうすれば、リモートからフェッチした人がそれらを見ることができるように、新しいコミット・アンド・ツリーがリモートのmod_1にあります。スーパーレポのプッシュでは、リモートのmod_1は更新されず、リモートのスーパーレポだけが更新されます。 – torek

+1

@ agent.smith - あなたはサブモジュールにコミットし、他のステップを実行してメインリポジトリをプッシュしました。外部サブモジュールのレポはクローン時に見られるものなので、サブモジュールレポにもプッシュする必要があります。 – manojlds

関連する問題