Git でローカルの変更を破棄し、追跡されていないファイルを削除する方法
3 つの異なるコマンドにより、3 つの異なる種類の変更がクリアされます。ここでは、編集、段階的な変更、新しいファイル (1 つのファイルまたはすべて) を破棄する方法と、重要なものが何も残らないように最初にプレビューする方法を示します。
作者 Kodmora
GitTree の背後にあるソフトウェア ハウス
- 元に戻すと回復
- ステージング
このページでは
追跡されているファイルへの変更を破棄するには、`git restore .` を実行します。追跡されていないファイルとフォルダーを削除するには、`git clean -fd` を実行します。最後のコミットに完全に戻るには、`git reset --hard` に続いて `git clean -fd` を実行します。 Git ではこれらの変更を後で戻すことはできないため、最初に git status と git clean -nd を使用してプレビューします。
どのコマンドが何を破棄するのでしょうか?
| 消えて欲しいもの | 指示 |
|---|---|
| 1 つの追跡ファイルに対する編集 | git restore path/to/file |
| 追跡されたすべてのファイルの編集 | git restore . |
| 段階的な変更、編集内容の維持 | git restore --staged . |
| 段階的な変更と編集 | git restore --staged --worktree . |
| Git が追跡しない新しいファイル | git clean -f |
| 新しいファイルとフォルダー | git clean -fd |
| 最後のコミット以降のすべて | git reset --hard、次に git clean -fd |
1 つのファイルへの変更を破棄するにはどうすればよいですか?
git restore src/search.ts
# only some of the changes, hunk by hunk
git restore -p src/search.ts
# the same file as it was on another branch
git restore --source=main src/search.ts古いガイドでは git checkout -- src/search.ts を使用します。これはまだ機能しますが、git restore (Git 2.23 以降) はこの 1 つのジョブのみを実行するため、悪用は難しくなります。
すべてのローカル変更を破棄するにはどうすればよいですか?
# tracked files, staged or not
git reset --hard
# then untracked files and folders
git clean -fd
# confirm
git status
# nothing to commit, working tree cleanコミットのない git reset --hard はブランチを現在の場所に保持し、ファイルのみをクリアします。 Git リセットの説明 では、コミットに名前を付けるとどうなるかを説明します。
ファイルを失わずにステージングを解除するにはどうすればよいですか?
git restore --staged src/search.tsファイルはステージング領域から出て、編集内容は作業フォルダーに残ります。何も削除されません。
git clean で追跡されていないファイルを削除するにはどうすればよいですか?
必ず最初にプレビューを行ってください。 -n は予行演習であり、実行される内容のみをリストします。
# preview files and folders
git clean -nd
# delete them
git clean -fd
# ask about each one
git clean -id| フラグ | 意味 |
|---|---|
-n | ドライラン: リストのみ、何も削除しません |
-f | 強制: 何かを削除するために必要です |
-d | 追跡されていないフォルダーを含める |
-i | インタラクティブ: 内容を選択 |
-x | .env や node_modules などの無視されたファイルも削除します |
-X | 無視されたファイルのみを削除する |
破棄された変更を復元できますか?
- コミットされた作業: はい、
git reflogを通じて。 - 隠し作業: はい。 落ちた隠し場所を回復する に示すように、落とした隠し場所でも見つかることがよくあります。
- ステージングされているがコミットされていない: 場合によっては、
git fsck --lost-foundが使用されます。 - ステージングされたことはありません: いいえ。あなたの編集者の地元の歴史にはまだそれが残っているかもしれません。
ファイルが削除されてコミットされた場合は、削除されたファイルを復元する方法 に手順が記載されています。
GitTree の変更を破棄する方法
捨てるものを選ぶ
変更パネルでファイルにマウスを移動し、ファイルへの変更を破棄…を選択するか、複数のファイルを右クリックして変更を破棄…します。 diff では、Discard Hunk または Discard Lines を使用します。
すべてをクリーンアップまたはクリアする
コマンド パレットから 追跡されていないファイルの削除... または すべての変更の破棄... を実行します。
確認事項を読んでください
ダイアログには内容が表示され、キャンセル がデフォルトです。 GitTree は最初に回復スナップショットを保存するため、元に戻す でスナップショットを元に戻すことができます。

すべてのオプションについては 変更を破棄して追跡されていないファイルを消去する を参照し、実践するには 無視して消去するレッスン を参照してください。
よくある質問
git list と git checkout の違いは何ですか?
git checkout はブランチの切り替えとファイルの復元の両方を行います。 Git 2.23 では、これらのジョブが git switch と git restore に分割され、より明確になりました。古い形式はまだ機能します。
git replace --hard は追跡されていないファイルを削除しますか?
いいえ。リセットされるのは追跡されたファイルのみです。新しいファイルは、git clean -fd を実行するまで保持されます。
git clean が「クリーンを拒否する」と表示されるのはなぜですか?
Git では、タイプミスによってファイルが削除されないように、デフォルトで -f (clean.requireForce) が必要です。ドライランが適切であると思われる場合は、-f を追加します。
git clean は無視されたファイルを削除しますか?
-x または -X を追加しない限り、そうではありません。プレーンな git clean -fd では、.gitignore 内のすべてがそのまま残ります。
変更を保持しながらクリーンなフォルダーを取得するにはどうすればよいですか?
git stash -uを実行します。追跡された変更と追跡されていない変更を保存し、フォルダーをクリアします。 隠しガイド で説明されているように、後で git stash pop を使って戻してください。
情報源
他の製品に関する申し立ては、2026年11月7日 の公式ページと照合して確認されました。価格と機能は変更されます。ベンダーのページが真実の情報源です。
