# Git commit 取り消し

Git でバージョン管理しているなら、誰でも commit した内容を取り消すことがあるでしょう。
commit で追加することが多いけど、取り消しがあまり使わないので、忘れやすいもの。

commit はファイルやディレクトリの追加・変更を、リポジトリに記録する操作です。
commit を実行することで、差分を記録してくれるコミット(リビジョン)と呼ばれるものが作成されます。

# コミット取り消し

# コミットだけを取り消す
git reset --soft HEAD^

# コミットだけを取り消す & 内容もリセット
git reset --hard HEAD^
  • --softオプション ワークディレクトリの内容そのまま、コミットだけを取り消す
  • --hardオプション ワークディレクトリの内容リセット、コミット取り消す
  • HEAD^ 直前のコミットを意味する
  • HEAD~{n} n 個前のコミットを意味する

HEAD~{n}の n の数がわからない時は、git reflogコマンドを使います。

git reflog 使って過去の操作履歴(HEAD の動き)を確認できます。

$ git reflog
ac3752c (HEAD -> master) HEAD@{0}: commit: :construction:
8492133 HEAD@{1}: commit (amend): :bug: fix
f8fa002 HEAD@{2}: commit (amend): :bug: fix

# commit 前の git add した変更を取り消し

git add したファイルの更新をインデックスから削除、インデックスを HEAD の状態へ戻す

git reset .
git reset HEAD .

# 直前のコミットメッセージを変更

誤ってエンター押してしまった!誤ったコミットメッセージを commit した時に修正で使えます。

git commit –-amend

amend は修正する、改める、変えるという意味します。

類似英語 change, revise, alter, reform,change, alter, vary, exchange, convert,correct, rectify, straighten, redress, adjust, amend

# よく使う git commit オプション

省略オプション フルオプション 意味
-a --all git add 省略して変更ファイルすべてをコミット
--interactive ファイル単位で選択しながらコミット
--patch 個々の変更内容を確認しながらコミット
--amend 直前のコミットメッセージをやり直す
-m --message コミットメッセージを指定
2022-02-16
  • git