【Git】コミットの取り消し、取り消しの取り消しがしたい!

コミットの取り消し 〜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

タイトルとURLをコピーしました