LoginSignup
4
5

More than 5 years have passed since last update.

gitで過去のコミットを取り消してからもう一度同じ変更を加える方法

Last updated at Posted at 2013-11-21

次のような流れのブランチで過去のコミットを取り消したい場合、

$ git log --pretty=oneline
ac2d70d95c63e856f284e3aa663adcb5e9c0c2df 関係ないコミット3
e778c654dd248936196724dd1787b0623aeba4ab 関係ないコミット2
16bb56ea998867f53522504a17cebe15271b384d xxx対応 その2
fc4564050e772e9a1338b4b5794793ad0829e1f0 関係ないコミット1
9d8466c81ab3614785457de4792f2cd2ca5e4b6a xxx対応1
ee804e6844eb75b8872b2a1497e1de55a4d8461e 関係ないコミット
(以下略)

git revertを2回して、git rebaseすると。

$ git revert --no-edit 16bb56ea998867f53522504a17cebe15271b384d
$ git revert --no-edit 9d8466c81ab3614785457de4792f2cd2ca5e4b6a
$ git rebase -i HEAD~2

エディタが起動するので

pick 16bb56e Revert "xxx対応 その2"
pick 9d8466c Revert "xxx対応 その1"

の部分を

pick 16bb56e Revert "xxx対応 その2"
squash 9d8466c Revert "xxx対応 その1"

に変更してエディタを閉じると。

そうするとコミットできるようになるので、メッセージを適当に編集してコミット。

それからrevertした変更をもう一度適用したい場合は
git cherry-pickすれば適用できるので次のような感じで。

$ git cherry-pick 9d8466c81ab3614785457de4792f2cd2ca5e4b6a
$ git cherry-pick 16bb56ea998867f53522504a17cebe15271b384d

例えばmasterに一度mergeしたんだけどタイミングをやっぱり遅らせたいときとか、
別ブランチに移したいときとかに使うと便利、かもしれない。

参考: http://d.hatena.ne.jp/miau/20100709/1278699637

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5