はじめに
「間違えてファイルを編集してしまった…」
「不要なファイルを追加してしまった…」
そんなとき、Git には変更をまるっと元に戻す便利なコマンドがあります。
この記事では、以下2つのコマンドを例付きで解説します。
-
git checkout .
:編集内容の取り消し -
git clean
:新しく追加されたファイルの削除
作業中にこんな状態になったとき…
$ git status
Changes not staged for commit:
modified: src/index.js
Untracked files:
temp.txt
dist/
やってしまった!
-
src/index.js
を変えすぎた… -
temp.txt
やdist/
は生成ファイルでいらない…
git checkout .
:編集だけを元に戻す
$ git checkout .
📌 これは ステージされていない変更(編集)をすべて破棄 します。
- ✅
modified
状態のファイルを元に戻す - ❌
untracked
なファイル(Git管理外の新規ファイル)は対象外
🔍 たとえば src/index.js
だけが初期状態に戻ります。
git clean
:未追跡ファイルを削除する
$ git clean -fd
オプション | 説明 |
---|---|
-f |
force(削除を明示的に許可) |
-d |
ディレクトリも削除対象に |
📌 これは Git に追加されていないファイル・フォルダを一括削除 します。
- ✅
temp.txt
やdist/
のような untracked ファイルを削除 - ❌ Git 管理下のファイルには影響しない
補足:実行前の安全確認 --dry-run
$ git clean -fd --dry-run
👀 実際に削除されるファイルを確認できます(削除は行われません)。
両方を使えば「まっさら」状態に
$ git checkout .
$ git clean -fd
これで以下のような状態に戻ります:
- 編集したファイル:元通り
- 新規で追加したファイル:削除
まとめ
やりたいこと | コマンド |
---|---|
編集をすべて取り消したい | git checkout . |
未追跡ファイルを削除したい | git clean -fd |
削除されるファイルを事前に確認したい | git clean -fd --dry-run |
編集も未追跡ファイルも全部戻したい | git checkout . && git clean -fd |
「とりあえず元に戻したい!」ときの最終兵器セットがこれ。
でも本当に戻していいか、--dry-run
で一度確認するのを忘れずに!