2017-08-22 25 views
0

私は別のプロジェクト、DMに依存しているプロジェクトAlphaを持っています。プロジェクトDMはデータモデルを表し、他のプロジェクトでも使用されます。Gitサブモジュールとプル変更

私のチームは、重複/分岐コードを避けるためにプロジェクトDMを独自のgitリポジトリに配置し、プロジェクトAlphaのgit repoをサブモジュールとして組み込むことに決めました。

私は

/home/me/projects/Alpha $ git status

利回りランニング、/home/me/projects/Alpha/DM/file1.txtにあるDMを、プロジェクトに対応するfile1.txtを変更: "modified: DM (new commits)を"。

私がよく理解していれば、$ git add DM$ git commit -m "Blo bli"は、AlphaのコミットポイントをプロジェクトするDMコミットを更新します(したがって、Alphaのコミットプロジェクトは互換性のあるDMのバージョンを知っています)。だから、

、それがプロジェクトのAlphaに取り組んで私のチームの誰かが/home/teammate/my-projects/Alpha $ git pullを実行した場合、その後、彼のプロジェクトアルファのファイルはコミット最新のものに更新され、/home/teammate/my-projects/Alpha/DM/の下にあるファイルが更新されます(私の変更を押した後に)ことを意味していそのコミットに対応するバージョンにも同じですか?サブモジュールを正しいバージョンに更新するために追加のコマンドを実行する必要がありますか?

ありがとうございました。

答えて

1

最初に、サブモジュールを主に読み取り専用として扱い、アップストリームのリモートから変更を取り込むことで、サブモジュールを更新するだけで、はるかに単純なものになります。

私はよく理解していれば、$ gitのをやってはDMと$ gitのは-mをコミット追加「BLO BLI」 はDMがそのプロジェクトアルファのは 与えられたプロジェクトアルファので(にポイントをコミットコミット更新どのバージョンのを知っているコミットDMは互換性があります )。

答えは「並べ替え」です。チェックアウトされたサブモジュールは「デタッチヘッド」状態になることがあります。この場合、ファイルを追加してコミットすると便利なことはありません(これは部分的にはサブモジュールリポジトリ内のファイルを編集しないことです)。親(アルファ)プロジェクトの消費者に見えるようになります変更をコミットした後、あなたの地元のサブモジュールという名前の枝にであると仮定すると、あなたが最初にあなたが説明したものを行います。

cd DM 
git add my-changes 
git commit -m 'some changes' 
git push 

その後、は、新しいサブモジュールのコミットを記録するためにリポジトリにコミット:

この後
cd .. 
git add DM 
git commit -m 'updated DM submodule' 
git push 

を、アルファリポジトリの新しいクローンは、あなたの更新の変更が表示されます。既存のチェックアウトを実行する必要があります:

git pull 
git submodule update 
0

この段階では、プロジェクトDMで新しいコミットのみが行われます。 プロジェクトのアルファ(および他のプロジェクト)では、サブモジュールが変更され、次のアルファのコミットによってサブモジュールの変更に対するコミットがコミットされます。 したがって、サブモジュールを参照する各レポで追加のコミットを行う必要があります。

古いコミットを使用してAlphaから古いコミットをチェックアウトするには、二重コミットが必要です。

サブモジュールの追加情報については、 https://chrisjean.com/git-submodules-adding-using-removing-and-updating/

関連する問題