コミットの取り消し 〜reset〜
git resetは、特定の時点までファイルを巻き戻すことができます。
git reset <取り消したいコミットID>で、指定できます。
*pushしたコミットには使わない!
commitとaddを取り消し
$ git reset
作業ディレクトリのファイルはそのまま。
commitのみ取り消し
$ git reset --soft
ステージングエリア、作業ディレクトリはそのまま。
全て取り消し
$ git reset --hard
作業ディレクトリにも残らず消える。
*ID指定以外の指定する書き方
・HEAD^‥直前のコミット
・HEAD~{n}‥n個前のコミット
書き方例)
$ git reset --hard HEAD^
コミットの取り消しを取り消す〜reflog→reset〜
間違えてコミットを取り消してしまった!という時のコマンドです。
reflog
以下のコマンドで、・コミット関連・ブランチの切り替え・履歴の書き換え
これら3つの過去の記録を見ることができます。
$ git reflog
9533108 (HEAD -> master) HEAD@{0}: reset: moving to HEAD
9533108 (HEAD -> master) HEAD@{1}: commit (initial): first-commit
このログから、戻りたい地点を確認して以下のresetで指定して戻ります。
今回の例だと、HEAD@{1}まで戻りたいので、以下のように打ちます。
$ git reset --hard HEAD@{1}
コミットの打ち消し〜revert〜
revertは「コミットを打ち消すためのcommitを打つ」という役割があります。
なので、コミットの記録が残らないresetと違い、revertは間違えたコミットの記録を残したい時に使います。
*push済みのコミットにも使えます。
$ git revert コミットID
IDを取得するには、以下で確認します。(英語数字のコミットのハッシュ値がID)
$ git log
commit 95331087b016bcb5f336706a60b6071f730cc214 (HEAD -> master)
‥‥
Date: Thu Sep 30 01:02:00 2021 +0900
first-commit