Gitで削除されたファイルを復元する方法
適切なコマンドは、削除がどこまで行われるかによって決まります。ここでは 3 つのケース、ファイルを削除したコミットを見つける方法、および Git で元に戻せないものを説明します。
作者 Kodmora
GitTree の背後にあるソフトウェア ハウス
- 元に戻すと回復
- コミット履歴
このページでは
まだコミットしていない削除済みファイルを復元するには、`git restore path/to/file` を実行します。 削除がすでにコミットに含まれている場合は、git log --diff-filter=D -- path/to/file でそのコミットを見つけて、git restore --source=<commit>^ -- path/to/file を実行します。 Git は、一度保存したものはすべて元に戻すことができるため、コミットされたファイルはほとんどの場合回復可能です。
| 何が起こったのか | 指示 |
|---|---|
| ステージングではなく削除されました | git restore path/to/file |
| 削除されステージングされました | git restore --staged --worktree path/to/file |
| コミットで削除されました | git restore --source=<commit>^ -- path/to/file |
削除したばかりのファイルを復元するにはどうすればよいですか?
git status の「コミット用にステージングされていない変更」の下にファイルがリストされている場合は、そのファイルをインデックスからコピーして戻します。
git restore src/app.tsgit rm 後にファイルを復元するにはどうすればよいですか?
git rm はファイルを削除し、削除を段階的に実行するため、「コミットされる変更」の下に表示されます。インデックスと作業フォルダーの両方を HEAD から復元します。
git restore --staged --worktree src/app.ts以前のコミットで削除されたファイルを復元するにはどうすればよいですか?
まず、それを削除したコミットを見つけます。 --diff-filter=D は削除のみを表示します。
git log --oneline --diff-filter=D -- src/app.tsそのコミットにはファイルはもうありませんが、その親にはファイルがあります。 ^ は「親」を意味するため、削除前の最後のバージョンが復元されます。
git restore --source=4f2a9c1^ -- src/app.tsファイルは新しい変更として作業フォルダーに戻ります。それをレビューし、他の編集と同様にステージングしてコミットします。 2.23 より古い Git では、git checkout 4f2a9c1^ -- src/app.ts は同じジョブを実行し、ファイルのステージングも行います。
フルパスを覚えていない場合はどうすればよいですか?
すべてのブランチでファイル名を検索します。 Git がシェルではなくパターンを展開できるように、引用符はそのままにします。
git log --all --diff-filter=D --name-only --oneline -- "**/app.ts"Git で戻せないものは何ですか?
- ステージングまたはコミットされたことがないファイル。 Git に保存されたことはありません。エディターのローカル履歴またはシステム バックアップを確認してください。
- ファイルは `git clean` によって削除されました。 これらは追跡されていないため、Git はコピーを保持しません。
- ステージングされていない編集は `git restore` に置き換えられます。 コマンドはそれらを上書きするため、意図した場合にのみ実行してください。
一度ステージングされてから失われたファイルは、何も指していない BLOB をリストする git fsck --lost-found で見つかる場合があります。 リセット、リベース、コミットの取り消し に関する投稿では失われたコミットについて説明し、ファイル履歴と責任 に関するレッスンではファイルを過去に遡って追跡する方法を示し、破棄とクリーニング のガイドでは GitTree が最初に保存するものについて説明しています。
GitTree にファイルを戻す方法
最初に「元に戻す」を押してください
GitTree がファイルを破棄または消去した場合は、ツールバーの 元に戻す を押してください。何かを削除する前に、回復スナップショットを
refs/ogt/trashに保存します。履歴を検索する
コミット グラフ検索を使用して、ファイルにアクセスしたコミットを見つけて、そのコミットを開いてそのバージョンを読み取ります。
失われたコミットには Lost & Found を使用する
Tools → Lost & Found を選択して、ブランチがポイントしていないコミットを探します。

よくある質問
git list と git checkout の違いは何ですか?
git restore は、ファイルの復元という 1 つのジョブを実行するために Git 2.23 に追加されました。 git checkout はブランチの切り替えも行うため、悪用が容易でした。
ファイルがいつ削除されたかを確認するにはどうすればよいですか?
git log --diff-filter=D -- path/to/fileを実行します。削除したコミットとその作成者と日付がリストされます。
git list でパス仕様が一致しないと表示されるのはなぜですか?
Git は、選択したソースのパスを認識しません。ファイルがコミットで削除された場合は、--source=<commit>^ を使用してそのコミットの親からファイルを復元します。
削除したフォルダーを復元できますか?
はい。ファイルの代わりにフォルダーのパスを渡します (例: git restore --source=<commit>^ -- src/utils)。
復元されたファイルは自動的にコミットされますか?
いいえ。作業フォルダー内の変更として表示されます。準備ができたらステージングしてコミットします。
情報源
他の製品に関する申し立ては、2026年11月7日 の公式ページと照合して確認されました。価格と機能は変更されます。ベンダーのページが真実の情報源です。