はじめに
本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。
今回の疑問点
今回の疑問点は、
git revert
とgit reset
の違いについて
です。
疑問点についての解説
結論
git revert
:指定したコミットの内容を打ち消すコミットを作成
git reset
:指定したコミットを削除
git revert
git revert
は指定したコミットの内容を打ち消すコミットを作成します。そのため、指定したコミットがログから消えることはありません。また、git revert
を実行した後には、push
をする必要があります。
git revert [打ち消したいコミットコード] #指定したコミットを削除
git revert -m [1か2] [打ち消したいコミットコード] --no-edit #指定したマージコミットを削除
git log
commit a9857cfa0d63caef134k7ea07061370ffd0fe3dc
Merge: xxxxxxx yyyyyyy
Author: xxxxxxxxxxxxxxxxxxxxxxxxxx
Date: xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
打ち消したいコミットとはgit log
で出力された上記のcommitの横に記載されているコードです。左から7桁分入力することで指定できます。GithubのNetwork graphからも確認することができます。
また、git revert -m [1か2] [打ち消したいコミットコード]
の[1か2]
には、git log
で出力された上記のmerge
の右に記載されている2つのコードのうちどちらを残すのか指定します。右側が1、左側が2です。
最後の--no-edit
を記述しない場合、コマンド実行後にエディタが開き、コミットメッセージの入力を求められます。
git reset
git reset
は、指定したコミットを削除します。ログも消えます。
git reset [削除したいコミットコード] # 現在のブランチを指定したコミットに戻す
git reset [option] [削除したいコミットコード] # オプションを指定 [--soft | --hard] [HEAD | HEAD^]
上記処理後、普通にpushができない場合には、git push -f
を実行しましょう。
[option]
について→https://www.r-staffing.co.jp/engineer/entry/20191129_1
まとめ
最後にポイントをまとめます。
-
git revert
:指定したコミットの内容を打ち消すコミットを作成。ログは消えない。実行した後にはpushする必要がある -
git reset
:指定したコミットを削除。ログも消える。