はじめに
pull requestを出した後にmerge pull request
してしまったものを取り消すメモ。
ほとんど手順メモ程度な感じ+他記事で使うスニペット記事。
とはいえ、数あるgit便利コマンドの中で毎回使うものではないけど
いざって時に役立つ、もしくは、困るのは取り消し系のコマンドですよね。
補足
他の取り消しもぱっと見たい自分用にまとめたので参考までに。
アジェンダ
- pull requestのmerge後に取り消すコマンド
- やってみる
1. pull requestのmerge後に取り消すコマンド
コマンドとしては簡単です。
$ git revert -m 1 マージコミットハッシュ番号
2. やってみる
コマンドは簡単ですがやっぱりやってみないとイメージはわからないですよね。
ということでやってみます。
初期状態
試す前に今の状態がこんな感じだったとして進めます
※ 初期コミットのみ $ git log --oneline 8189e9c Initial commit $ ls -l drwxr-xr-x 15 hoge hoge 510 6 10 15:34 .git -rw-r--r-- 1 hoge hoge 26 6 10 15:30 README.md $ git branch * master
pull request 〜 masterへのmergeまでやる
取り消す前にまずはpull request送るまでやります。
※ ブランチを作成してチェックアウト $ git checkout -b some-branch ※ ファイルを追加 $ ls -al -rw-r--r-- 1 hoge hoge 26 6 10 15:30 README.md drwxr-xr-x 3 hoge hoge 102 6 9 21:19 img -rw-r--r-- 1 hoge hoge 83 6 9 21:19 index.html ※ add、commitする $ git add . $ git commit -m 'add file' ※ ファイルを修正 $ vi index.html ※ add、commitする $ git add . $ git commit -m 'modify index.html' ※ pushする $ git push origin some-branch ※ logを確認 $ git log --oneline e1bbeab modify index.html 0efdd5c add file 8189e9c Initial commit
ここまでやったらgithub上のCompare $ pull request
ボタンからpull requestを送ります。
pull requestしたらすぐにmergeします。
取り消す
masterにmergeしたのを取り消しますが、流れとしてはこんな感じで行います。
今回はファイルを追加・修正したものを
- masterにチェックアウト
- pullして最新にする
- logを確認してmerge commitハッシュを確認する
- git revertで戻す(失敗例)
- git revertで戻す(成功例)
- revertしたログを確認してみる
- revertした後ファイルとか見てみる
- revertしたコミットをmasterにpushする
※ masterにチェックアウト $ git checkout master ※ pullして最新にする $ git pull ※ logを確認してmerge commitハッシュを確認する $ git log --oneline 43cc42e Merge pull request #2 from tweeeety/some-branch e1bbeab modify index.html 0efdd5c add file 8189e9c Initial commit ※ git revertで戻す(失敗例) $ git revert 43cc42e error: Commit 43cc42e628bfc9e8d1bf4eab3bbb638fed7397ce is a merge but no -m option was given. fatal: revert failed ※ git revertで戻す(成功例) $ git revert -m 1 43cc42e ※ revertしたログを確認してみる $ git log --oneline --graph --decorate * 8a79277 (HEAD, master) Revert "Merge pull request #2 from tweeeety/some-branch" * 43cc42e (origin/master, origin/HEAD) Merge pull request #2 from tweeeety/some-branch |\ | * e1bbeab (origin/some-branch, some-branch) modify index.html | * 0efdd5c add file |/ * 8189e9c Initial commit ※ revertした後ファイルとか見てみる $ ls -al drwxr-xr-x 16 hoge hoge 544 6 10 15:02 .git -rw-r--r-- 1 hoge hoge 18 6 9 21:28 README.md ※ revertしたコミットをmasterにpushする $ git push origin master
解説
ということで、今回の例でいうと
merge commitハッシュである43cc42e
を指定してrevertすることで、
逆の打ち消すコミットを発行しました。
最後にlsでファイルを見た通り8189e9c Initial commit
の状態まで戻っています。
まとめ
ブランチ運用で進めていてmergeしてリリースしたが戻したいときは
こういったオペレーションも必要なので使うチャンスは訪れたくはないですが覚えたいですね!