1

Pro Git bookのページhttp://git-scm.com/book/en/Git-Tools-Submodulesでは、サブモジュールを git プロジェクト内のディレクトリとして作成する方法について説明しています。これは、サブモジュールを追加するために使用されるコマンドです。

$ git submodule add git://github.com/chneukirchen/rack.git ラック

ページの後半に、それは言います

ラック ディレクトリを別のプロジェクトとして扱い、そのサブプロジェクトの最新のコミットへのポインターを使用して、スーパープロジェクトを時々更新できます。

これは何を意味するのでしょうか?このコンテキストでの「ポインター」または「更新」の意味がわかりません。このポインタはどこにどのように保存されますか? スーパープロジェクトを更新するにはどうすればよいですか?

4

3 に答える 3

3

サブモジュールはスタンドアロンの Git リポジトリです。それをサブモジュールにするのは、「スーパー プロジェクト」、またはサブモジュール リポジトリが内部にある Git リポジトリによってどのように参照されるかです。

サブモジュールとして利用されているリポジトリに変更を加える場合、Git リポジトリで通常行うのと同じように作業します。つまり、変更を加え、追加し、コミットし、プッシュします。しかし、サブモジュール リポジトリでこれらの変更を行った後、「スーパー プロジェクト」リポジトリで、コミットされていない変更があり、それらの変更がサブモジュール リポジトリを参照することに気付くでしょう。

何が変わったのでしょうか?「スーパー プロジェクト」リポジトリは、サブモジュール リポジトリのタブを保持します - その場所、名前、および (これは重要です) 現在のコミットです。なぜコミットするのですか?サブモジュールで参照する適切なコミットを「スーパープロジェクト」で指定できるためです。これには多くの利点があります - 対応するためにプロジェクトをまだ更新していない後方互換性のない変更で最近更新されたサードパーティの lib (サブモジュールとして) を使用するイメージ。古いコミットへの参照を保持することで、プロジェクトに取り組み始める人は誰でも、正しくサポートされているバージョンのサブモジュールを使用できるようになります。

サブモジュールの最新のコミットを参照するように「スーパー プロジェクト」を更新する場合は、他の変更されたファイルと同じように、追加、コミット、およびプッシュするだけです。

于 2013-10-17T02:06:02.637 に答える
1

Dev1 & Dev2 は、以下のソース コード構造を持っています。

  • SrcTree
    • メインコード
    • サブモジュール

Dev2 は SubModule にいくつかの変更を加え、その変更をプッシュします。

  • サブモジュールから
    • 「git add サブモジュールのファイル」
    • 「ギットコミット」
    • 「ギットプッシュ」
  • SrcTree から
    • 追加
    • 専念
    • push // サブモジュールのポインタを更新します

Dev1 は、subModule を正しく更新するために以下のアクションを実行する必要があります

于 2013-10-17T01:52:18.573 に答える
0

git サブモジュールに関するこの投稿を参照できます。 http://plasmixs.wordpress.com/2013/10/06/git-submodules/

于 2013-10-17T08:13:03.137 に答える