Menu
Coddy logo textTech

Git: 直前のコミットを取り消す

最終更新

直近のコミットを取り消すには、その変更をどうするかを決めます。git reset --soft HEAD~1 でステージしたまま残すか、素の git reset HEAD~1 でステージ解除したまま残すか、git reset --hard HEAD~1 で破棄します。コミットがわずかに間違っているだけなら、git commit --amend がその場で修正します。すでにpush済みなら、履歴を書き換える代わりに git revert を使います。より古いコミットや複数のコミットをまとめて取り消すには、コミットの取り消しページを参照してください。

これらをターミナルプレイグラウンドで試してみましょう - ブラウザ内の本物のシェルで、インストールは不要です。

直前のコミットの取り消しは HEAD を 1 つ戻します。変更をステージに残すか、外すか、破棄するかはモードで決まります。

変更をどうするか選ぶ

GoalCommand
コミットを取り消し、変更をステージしたまま残すgit reset --soft HEAD~1
コミットを取り消し、変更をステージ解除したまま残すgit reset HEAD~1
コミットを取り消し、変更を破棄するgit reset --hard HEAD~1
直前のコミットを修正する(メッセージやファイル)git commit --amend
すでにpushしたコミットを取り消すgit revert HEAD

実践例

直前のコミットを取り消し、より良いメッセージでコミットし直します。

StepCommandResult
1git reset --soft HEAD~1コミットが削除され、変更はステージされたまま
2git commit -m "clearer message"同じ変更をコミットし直す

Git 直前のコミットの取り消しに関するよくある質問

変更を残したまま直前のコミットを取り消すには?
git reset --soft HEAD~1 を実行します。これは直前のコミットを削除しますが、その変更をステージしたまま残すので、すぐにコミットし直せます。代わりに変更をワーキングツリー内でステージ解除の状態にしたい場合は、git reset HEAD~1(デフォルトモード)を使います。
直前のコミットを取り消して変更も削除するには?
git reset --hard HEAD~1 を実行します。これはコミットを削除し、その変更をワーキングツリーから破棄します。破壊的な操作です - 作業が必要になるかもしれない場合は、代わりに --soft を使うか、後で git reflog で復元してください。
コミットメッセージだけを直したい場合は?
git commit --amend を使います。直前のコミットを再度開くので、別のコミットを作らずにメッセージを編集(必要ならファイルの再ステージも)できます。すでにpushしたコミットのamendは、履歴を書き換えるので避けてください。
pushした後に直前のコミットを取り消すには?
git revert HEAD を使います。revertは直前のコミットを打ち消す新しいコミットを作り、履歴をそのまま保ちます - 共有ブランチには安全な選択です。pushしたコミットをresetすると、他の全員が書き換えられたブランチを整合させる羽目になります。
これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ内の本物のシェルでこれらのコマンドを実行できます - インストールは不要です。Coddyの無料のインタラクティブなGitコースでも、変更の取り消しをステップごとに扱っています。
Coddy programming languages illustration

Coddy で Git を学ぼう

始める