2016-10-31 10 views
0

私はマージしたい枝developupgradedを持っています。ブランチupgradeddevelopに由来しますが、約50個の新しいコミット(主に他のブランチとのマージ)があり、upgradedではさらに多くの変更があります。だから、developupgradedに順番に(コミットによってコミットする)マージする必要があります。これは、更新が必要なAPIの変更とマージの競合があるためです。しかし、単純にdevelopのコミットをマージするだけでは、グラフ上のコミットごとに新しい接続が作成されます。私は本当に50の不要なグラフのパスを望んでいません...gitを使ってブランチをクリア履歴と順番にマージするには?

どのように私はこの狂ったグラフの接続を避けることができますか? Atlassian Sourcetree GUIを使用するのが最も嬉しいです。

enter image description here

+1

なぜこれを1つずつ行っていますか? – Amit

+0

バグを捉える方がずっと簡単です。私が言ったように、フレームワークのAPIの変更があり、開発ブランチはまだ古いAPIを使用しています - 更新する必要があります... –

+0

['git imerge'](https://github.com/mhagger/git-imerge) )。私は決してそれに追い込まれていないので、あなたが求めているものと完全に一致するように見えることはあまり知らない。 – jthill

答えて

0

developと同じツリーを指して二次枝develop-rebaseを作成します。何か問題が生じた場合に備えて、オリジナルのdevelopブランチを保持します。 次に、upgradedの上にdevelop-rebaseをリベースすると、各コミットが順番に適用されます。インタラクティブに実行して、コミット後にテストする機会があります。

このプロセスではクリーンな状態を取得してパッチを適用することをお勧めします。

ここで停止しても問題ありません。しかし、developからupgradedへの中間リベースなしのマージを希望する場合は、新しいdevelop-rebasedevelopの差分を取り、developの上に適用してからdevelop-rebaseを取り除くことができます。

次に、とマージ可能にするためにdevelopをどのように修正したかを説明するパッチと異なるコミットを作成し、マージします。

1

すべてのマージをまとめてみたい場合はSquashing a sequence of small merges from master into my branch with git while keeping reference to master?を参照してください(これはコマンドラインを使用していますが、GUIでは不可能なのですが、GUIは通常の)、

これをやりたい場合は、git imergejthill's commentに記載されています)を実行します。ここでもコマンドラインから実行されます。

関連する問題