リモートブランチにマージする前に、いくつかのテストコードをコミットしました。この合併には多くの対立があり、正すのにかなりの時間がかかりました。したがって、私の履歴は次のようになります。
7ab562c Merge from remote branch
... whole load of commits brought across from the remote branch...
f3e71c2 Temporary TESTING COMMIT
テストコードは問題ありません。コミットメッセージを変更したいだけです。通常、私はgit rebase -i f3e71c2^
を使用しますが(これはまだプッシュされていないため)、同僚から、これによりマージが台無しになると言われました。私は本当にマージを台無しにしたくない:)
私の同僚は正しいですか?もしそうなら、私にできることはありますか、それとも私はこの歴史と一緒に暮らす必要がありますか?
git rebase --preserve-merges --interactive
を試すことができます:
-p
--preserve-merges
マージを無視する代わりに、それらを再作成してみてください。
ManページのBUGセクションには次のものが含まれます。
--preserve-merges --interactive
によって提示されるToDoリストは、リビジョングラフのトポロジを表していません。
コミットの編集とコミットメッセージの言い換えは正常に機能するはずですが、コミットを並べ替えようとすると、直感に反する結果になる傾向があります。
jthill 's comment が説明しているように(競合の解決がレコーダーである場合、-p
はマージをより適切に保持するため):
あなたは遡及的にマージのためにrerereを軽くすることができます:
git config rerere.enabled true
git checkout $merge^1
git merge $merge^2
git read-tree --reset -u $merge
git commit -m-
git checkout @{-1}