2

これが現在の機能ブランチのワークフローです ->

  • マスターから新しいフィーチャー ブランチを作成します。
  • 機能ブランチに作業をコミットします。
  • マスターを機能ブランチにマージして、最新の状態に保ちます。
  • 競合がある場合は、それらを解決します。これにより、フィーチャー ブランチに "Merge master into Feature_Branch" コミットが作成されます。
  • フィーチャー ブランチが完成したら、フィーチャー ブランチをマスターにマージします。

問題:

フィーチャー ブランチを master にマージ --squash を実行すると、問題は発生しません。通常のマージを行ってからリベースすると、すべての競合を再度解決する必要があります。何百ものコミットがある機能ブランチでは、これは大きな苦痛です。

機能ブランチをマスターにマージし、競合することなくリベースする方法はありますか?

4

1 に答える 1

4

私はあなたがこのことと戦っていると思います: Rebaseing a Git merge commit

オプションを有効rerereにして使用git rebaseしてみてください。-p

私がよく理解していれば、-pリベース中につまずいたときに以前に保存された競合解決を再利用しようとするようにGitに依頼rerereし、文字通り「記録された解決を再利用する」ためにgitを有効にする「プラグイン」です。

少し前にここに記事がありましたが、今はダウンしているようです。多分あなたはそれをインターネットアーカイブで見つけるでしょう。

それで、私はちょうど別のものを調べました、それは物事をうまく説明しているようです:

ボートをリレール...

すなわち:

rerereオンにすると、ときどきマージし、競合を解決してからマージを取り消すことができます。これを継続的にrerere行うと、すべてを自動的に実行できるため、最終的なマージは簡単になります。

ブランチのリベースを維持したい場合は、これと同じ戦術を使用できるため、毎回同じリベースの競合に対処する必要はありません。または、マージして一連の競合を修正したブランチを取得し、代わりにそれをリベースすることにした場合、おそらく同じ競合をすべて再度行う必要はありません。

ハイライトをご覧ください。まさにあなたがしていることのようです。

しかし、「ねえ、なぜそれがデフォルトで有効になっていないの?!」とジャンプする前に。少し注意して、これも参照してください: https://stackoverflow.com/a/5521483/717732一緒に. 念のため!rererererere forget

于 2013-11-13T16:14:58.343 に答える