😎
マージしたPRをRevertでなかったことにしたい
概要
何個かPRマージして検証環境で動作確認してたけど
1個のPRにバグが入り込んでて、それだけなかったことにしたい・・・
というケースが仕事であり、初めてやったので忘れないようにメモ残しとく
状態
commit b
でa.txtファイルを追加し
GitHub上のPRでマージすることでcommit c
のマージコミットが作成された状態
$ git log --graph --all
* commit c (HEAD -> master, origin/master, origin/HEAD)
|\ Merge: 47cfc85 30143d7
| | Author: xxx <xxxx@example.com>
| | Date: Sat Apr 24 22:41:02 2021 +0900
| |
| | Merge pull request #13 from shintaro-uchiyama/test-revert
| |
| | add a
| |
| * commit b (origin/test-revert, test-revert)
|/ Author: xxx <xxxx@example.com>
| Date: Sat Apr 24 22:40:15 2021 +0900
|
| add a
|
| A tmp/a.txt
|
* commit a
| Author: xxx <xxxx@example.com>
| Date: Sat Apr 24 22:35:03 2021 +0900
|
| first commit
|
なかったことにする
でも、やっぱりなかったことにしたいのでマージコミットcをrevertしてみる
(cは実際にはハッシュ値に置き換えてやってみてください
$ git revert c
error: commit c is a merge but no -m option was given.
fatal: revert failed
怒られた・・
-m
オプションが必要みたい
確かに、cのマージコミットをなかったことにした時
コミットaとコミットbのふたつが残るので、どっちの状態にしたらいいかわからんのじゃい!
っていうことみたい。
1を指定するとマージされた側のブランチの状態にもどす
2を指定するとマージした側のブランチの状態に戻せるみたい
今回のケースで言えばa.txt
を追加したPRの内容をなかったことにしたいので1を指定する
$ git revert c -m 1
Removing tmp/a.txt
[test-revert-pr-merge 0117544] Revert "Merge pull request #13 from shintaro-uchiyama/test-revert"
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 tmp/a.txt
これで無事PRの内容がなかったことになったです
まとめ
commitに対してrevertすることは何度もあったけど
PR単位でのrevertってやったことなかった&mオプション必須とか知らなかったので
メモを残しておく🤹♂️
Discussion