🌳
git revert備忘録
git revertとは何か
チーム開発をしていて、revertする機会があるのですが、あまり理解できていなかったので、備忘用です
git revert
とは?
git revert
は過去のコミットを「打ち消すための新しいコミット」を作るコマンドです。
git reset
のように履歴を巻き戻さず、チーム開発でも安全に使えます。
使い方
revert
した後はcommit
とpush
を忘れずに!
ケース:直前のコミットを取り消したい場合
git revert HEAD
ケース:2つ前のコミットを取り消したい場合
git revert HEAD~2
ケース:複数のコミットを一気に取り消したい場合
git revert HEAD~3..HEAD
-m
オプション)
マージコミットをrevertする方法(マージコミットをrevertするには -m
オプションが必要です。
git revert -m 1 <マージコミットのハッシュ>
-m
オプションの意味
-m
は「マージのどちらの親を残すか(正とするか)」を指定するオプションです。
-
-m 1
:1番目の親(通常はマージ先のブランチ)を残す -
-m 2
:2番目の親(マージ元のブランチ)を残す
feature
を main
にマージしたけど取り消したい
例:git revert -m 1 <マージコミットのハッシュ>
実行結果のイメージ
A - B - C - D ← HEAD
⤷ マージコミット(M)
このMをrevertすると:
A - B - C - D - E ← HEAD(EはMを打ち消すコミット)
注意点
- revertしても履歴は消えません(resetとの大きな違い)
- マージをrevertすると、再度同じブランチをマージする際にコンフリクトが発生する可能性があります
まとめ
操作 | 説明 |
---|---|
git revert <commit> |
通常のコミットを打ち消す |
git revert -m 1 <hash> |
マージコミットを打ち消す(親1を基準に) |
おまけ
git revert
は単なる「取り消し」ではなく、「どういう意図で取り消したか」も残せる便利な履歴管理手段です。
チーム開発では reset
よりも revert
を選ぶ方がトラブルも少なくて良いです
Discussion