Gitで削除などの変更(ステージング前の段階)を復元する方法

はじめに

この記事では、「Gitで削除などの変更(ステージング前の段階)を復元する方法」について書いています。

git rmでファイルを消した後、そのファイルを復元しようとしても上手くいかずに調べたのが記事を書いたきっかけでした。

自分に向けた備忘録でもありますが、「Gitで削除や編集したファイルを復元したい」な人の一助になれば嬉しいです。

要点だけ

git checkout <ファイル名>またはgit restore <ファイル名>

説明

Note

試した際の環境は以下の通りです。

実験で使うgitのリポジトリは以下のような構成になっており、またリポジトリ内のファイルは全て登録されているものとします。

sample
├ .git
│  └ ...
├ alpha.txt
└ beta.txt

ここから単純にbeta.txtをローカルで削除しただけの状態でスタートしたいと思います。

Note

削除した例で説明してますが、ファイル内を編集したといった変更でも同じ要領で復元する行うことができます。

単純にbeta.txtをローカルで削除しただけの状態でスタートしたいと思います。

この時のリポジトリ(フォルダ)の状態は以下のようにbeta.txtは削除されています。

sample
├ .git
│  └ ...
└ alpha.txt

また、git statusを実行すると次のような出力が得られると思います。

On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    beta.txt

no changes added to commit (use "git add" and/or "git commit -a")

この状態から復元するにはcheckoutコマンドを使用します。

git checkout <ファイル名>

この例だと

git checkout beta.txt

を実行することで削除前の状態に復元することができます。

また、checkoutコマンドの代替として用意されたrestoreコマンドを使って復元することもできます。

git restore <ファイル名>

おわりに

「Gitで削除などの変更(ステージング前の段階)を復元する方法」について解説しました。

誤った処理(特に削除)をしてしまった時、少しテンパってしまいますが復元する方法が分かったので安心して変更を加えていけそうです。

さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。

awesome-linus.com