2

私は2つの裸のリポジトリsupera、1つの - のクローンと-superclone_super1つのクローンを持っています。のサブモジュールとしてrepo を追加しました。aclone_aaclone_super

でいくつかの変更を行いclone_a、それらをプッシュしてgit pull origin masterinを実行すると、 in の後に表示されるforで~/clone_super/aレンダリングされます。modify status~/clone_super/agit status~/clone_super

もしそうならgit submodule update~/clone_super/a前のコミットに戻ります。では、サブモジュールを更新するたびに、それらが存在するリポジトリのサブモジュールをコミットしてプッシュする必要があることを意図していますか?

4

2 に答える 2

4

簡単な答えは「はい」です。サブモジュールを更新した後、コミットしてプッシュする必要があります。

サブモジュールでない場合にディレクトリがどのように機能するかを考えてください。ファイルを変更するたびに、ファイルをコミットしてプッシュする必要があります。サブモジュールは、superがファイルの変更を直接追跡しないことを除いて、まったく同じです。代わりに、サブモジュール内のリポジトリはファイルの変更を追跡し、スーパーリポジトリはサブモジュールのコミットを追跡することによってそれらの変更を追跡します。

これの良いところは、さまざまな粒度で追跡できることです。スーパーリポジトリを変更せずに、サブモジュールで追跡された数十の変更を行ってから、サブモジュールでの変更を反映するスーパーへの単一のコミットを行うことができます。コストは、2回コミットするための要件です。

于 2012-04-26T13:40:28.423 に答える
1

aはい、意図されています。どのバージョンのレポが各バージョンのレポを使用しているかを履歴に残すことができますsuper

于 2012-04-26T13:41:43.307 に答える