僕の会社ではmasterブランチからtopicブランチをきって開発を行っています。
topicブランチにmasterの差分を取り入れたいときは、mergeではなくrebaseで行うよう推奨しているのですが、稀にmergeでmasterの変更を取り入れてしまう人がいて、topicブランチにmasterブランチからのマージコミットログが残っています。
masterのHEADにマージコミットがある場合はgit reset等を使って、マージコミットをなかった事にしてもらっているのですが、
例)
master
| topic
| |
| ○
| / |
○ ○
| |
○ ○
| /
○
masterのマージコミットの上にさらにtopicブランチでの開発をすすめている場合は、修正が厄介です。
例)
master
| topic
| |
| ○ C4
| |
| ○ C3
| / |
○ ○ C2
| |
○ ○ C1
| /
○
そういう時はgit resetでの修正も面倒になってくるので、以下のようにgit rebase -iに-pオプションをつけて実行して解決します。
git rebase -i -p ${消したいマージコミットハッシュの一つ前のコミット}
※git rebaseで指定するマージコミットのハッシュは上の例の場合はC2のハッシュを指定します。
エディタでマージコミットの行を削除すればマージはなかった事になります。
ほかにいい方法があれば教えてほしいですが、今の所ベストな解決方法かなと思っています。