RepoXにBranchAとBranchBという2つのブランチがあるとしましょう。 RepoXにはSubmoduleYというサブモジュールもあります。Git:マージとサブモジュール
BranchAはリビジョン 'abc'でSubmoduleYを持ち、BranchBはリビジョン 'def'でSubmoduleYを持ちます。
BranchAをBranchBにマージしたいと思いますが、私はBranchBのSubmoduleYに元のリビジョンの「def」を指名しておきたいと思います。
方法1:
- チェックアウトBranchB私はこれを行うのカップルの方法を参照してください。
- SubmoduleYをリビジョン 'abc'に移動すると、実際のマージが無駄になりません(現在、サブモジュールレベルでマージしたくない)。
- SubmoduleYの新しいリビジョンをコミットします(マージではフローティングにすることはできません)。
- BranchAをBranchBにマージします。競合があれば解決する。
- SubmoduleYをリビジョン 'def'に戻します。
- SubmoduleYの新しいリビジョンをコミットします。
- メインリポジトリに変更をプッシュします。
方法2:ステップ6をやっ
方法1と同じですが、代わりに、リベースや余分なサブモジュールを取り除くステップ3からコミット
はどちらも迷惑な欠点を持っているようだ。
方法1は2つの余分なコミットを履歴に入れます。
方法2は、サブモジュールリビジョンとの変更を忘れてしまいます。サブモジュールリビジョンはコミットが削除されるためです。したがって、後でマージすると再びいくつかの問題に対処する必要があります。
良い方法がありますか?
ニースのソリューション!ありがとう。 – Ben