私は、master
とwork
のブランチを持つparent
プロジェクトを持っています。 master
ブランチは、アップストリームリポジトリから変更をプルするためにのみ使用され、時々これらの変更をwork
ブランチにマージします。マスターブランチに変更は行われません。Git:2つの親ブランチでサブモジュールのポインタが同じコミットになる方法
プロジェクトにサブモジュールchild
があります。ある時点で、master
ブランチの変更をwork
ブランチにマージした後、私は2つのブランチのサブモジュールポインタが異なることに気付きました。 1つのブランチから別のブランチに切り替えて、git status
と入力すると、バックmaster
への切り替え時:
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: child (new commits)
そしてgit diff
の出力には、の線に沿って何かである:git submodule update
「修正」の変化は、離れて行くことによってすぐに問題を介してサブモジュールを更新
diff --git a/child b/child
index 02232f9..5902a22 160000
--- a/child
+++ b/child
@@ -1 +1 @@
-Subproject commit abcdefdeadbeef
+Subproject commit 12381257dea0ffff018dead
しかし、私が支店を切り替えるたびに、私は汚染されたインデックスを再度持ちます。 Gitはwork
があると思うので、私は、いつも私が最後work
へmaster
を合併しますが、ときgit submodule update
を実行した後、私はwork
へmaster
をマージすることはできませんでしたブランチmaster
の一つとして同じコミットを指すように枝work
のサブモジュールのポインタをしたいですすでに最新の状態になっています。
ブランチmaster
に1が行うようにどのように「修理」ブランチwork
におけるサブモジュールのポインタと、それは同じにポイントしますが、コミットすることができますか?
私は、競合の問題が枝work
上のサブモジュールで一度過去にあったことを知っているが、どこでそれが起こったので、私は本当にこのような状況が発生した理由を正確に伝えることができないとき、私はもう知りません。
parent
がサブモジュールポインタを変更したことを確認する方法はありますか?this questionによると、それはできませんか?
コミットしたくないその他の変更がある場合は!答えを明確にすることができればうれしいです(ブランチ 'work')。サブモジュールを手作業で特定のコミットに更新し、その変更をインデックスに追加する必要があります。 – moktor
私はいくつかの説明を追加しました。 'git commit'はあなたが現在いるブランチに常に影響を与え、時には別のブランチ上のサブモジュールを更新したいと思うかもしれないので、後世のためにもっと一般的にしました。 – GentlemanMax