git reset – コミットやステージを取り消すコマンド

リポジトリ管理 環境変数
スポンサーリンク

git reset コマンドは、HEAD(現在の参照)を指定した状態に戻し、ステージングエリアや作業ツリーを取り消すためのコマンドです。
コミットのやり直しや、ステージした変更を外すときに利用されます。

構文(Syntax)

git reset [オプション] [コミットID/ブランチ]

主なオプション一覧

オプション説明使用例
(なし)/ --mixedHEAD を指定コミットに移動し、ステージングを解除(作業ツリーは保持)git reset HEAD~1
--softHEAD を指定コミットに移動し、ステージングは保持(コミットだけ取り消し)git reset --soft HEAD~1
--hardHEAD を指定コミットに移動し、ステージングと作業ツリーも完全に破棄git reset --hard HEAD~1
<ファイル>特定ファイルをステージから外す(HEAD は移動しない)git reset app.py

実行例

直前のコミットを取り消してステージ解除

git reset HEAD~1

(変更は残るがステージから外れる)

コミットだけを取り消して再編集

git reset --soft HEAD~1

(ステージされた状態で戻るので再コミット可能)

直前のコミットを完全に取り消す

git reset --hard HEAD~1

(作業ツリーも含めて完全に巻き戻す)

特定ファイルをステージから外す

git reset app.py

コミットIDを指定して戻す

git reset --hard abc1234

エラー例(存在しないコミットID)

git reset xyz9999

出力例:

fatal: ambiguous argument 'xyz9999': unknown revision or path not in the working tree.

関連コマンド

  • git revert : コミットを取り消すが、履歴を残す方法。
  • git checkout / git switch : 特定のコミットやブランチに移動する。
  • git restore : ファイル単位の復元専用コマンド(Git 2.23 以降推奨)。

備考

  • --soft--mixed--hard の順に「戻す範囲」が広くなる。
  • 公開済みの履歴に対して git reset を使うと他人の履歴と食い違うため注意。
  • git reset --hard は作業を完全に失う可能性があるため、慎重に利用する必要があります。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント