次のシナリオを検討してください。
- マスターからブランチをチェックアウトしました
- 私はいくつかのコミットをしました
- 更新されたマスターをマージしました
- さらにいくつかのコミットを行いました
- ここで、ポイント 2 からのコミットが影響を受けないように、ポイント 4 からのリベース コミットが必要です。
したがって、最初に持っている場合:
(1) (2)
x--x--x--x--x--x--x master
\ \
y--y--Y--y--y dev
(2)(3) (4)
私は手に入れたい:
(1) (2)
x--x--x--x--x--x--x master
\ \
y--y--------Y'--y'--y' dev
(2) (5) (5)
私がやるgit rebase master
と、2と4の両方からコミットがリベースされ、3からマージが削除されます。それは私が望むものではありません。
git merge master
また、3 からのマージ コミットの前に実行し、3 からのマージ後に最後のマージを移動し、それgit rebase -i -p
を 3 からのマージに修正/スカッシュするオプションもあります。更新: それほど簡単には機能しません。Git は 2 つのマージを押しつぶすことを拒否します。この問題: git rebase interactive: squash merge commits together。