2012-10-01 7 views
20

gitサブモジュールがどれほど恐ろしいかについて多くのことを読んだが、それが限界を感じている人たちの嘆きであるか、特に私のユースケースに関連して)。サブツリーまたはサブモジュールを使用して外部リソースを管理する

私はちょうどこの

website/ 
libs/ 
    js/ 
    fs-slides [external] 
    fs-dialog [external] 

ように私のレポに異なるリポジトリが含まれており、簡単にそれらのリポジトリを更新する可能性を持っていると思います。私が理解している限り、レポからただ1つのファイルを含めることは容易ではありません。 (しかし、これは問題ありません)

このためにサブモジュールを使用する必要がありますか?
それに問題がありますか?または、サブツリーがはるかに簡単ですか?

答えて

11

サブモジュールは、あなた自身のサブディレクトリにこれらのサブレポを含めていないので特に適しています。進行中の更新を有しながら、それらを更新したときに「how exactly does git submodule work」で説明したようにサブモジュールを使用している可能性が

メイン深刻な問題は、次のとおりです。あなたはサブモジュールでコミットを行う際に支店を設定するのを忘れた場合

は、言ったコミットデタッチされたHEADで作成され、進行中の変更は次のgit submodule updateで失われます(サブモジュールレポのためにアクティブ化されている場合は、reflogを通して戻すことができます)。 Michaelcommentsとして次に

、および上記のリンクではIの詳細として、あなたは自身の上流にサブモジュールをプッシュする必要がある前にコミットし、親レポをプッシュ(非公開サブモジュールをコミット押し回避するため)

+1

コミットを作りますサブモジュールで 'git push 'を覚えておく必要があります。なぜなら、メインリポジトリで 'git commit&git push'を実行しなければ、他の場所には存在しないサブモジュールコミットへの参照をプッシュしているからです。 – Michael

+0

@マイケル良い点。私はより多くの可視性のためにそれを答えに含めました。 – VonC

関連する問題