前提・実現したいこと
rm -rf で削除してしまった複数のディレクトリ、ファイルを復元したい
発生している問題
特定のファイルのみを削除しようとしましたが、
rm -rf backend/*
と * を誤って使用してしまった為、すべてのディレクトリ、ファイルが削除されてしまいました。
試したこと
https://www.sfware.com/ja-jp/deleted-file-recovery/jp-recover-files-deleted-with-rm-mac.html
こちらのサービスがrmコマンドで消したデータを復元できるサービスみたいなのですが、使用するか迷っています。
補足情報(FW/ツールのバージョンなど)
macOS Big Sur
バージョン 11.2.1
Gitで記録していれば、適切な箇所をcheckoutするだけではないでしょうか?
回答頂きましてありがとうございます。
checkoutする事でファイルを復元できるのでしょうか、、?
checkoutはブランチの切り替えで使用するという認識だったのですが、、
そうですね、「ファイルを削除した」というのもGitに記録できるものですので、それ以前のコミットを取り出せばもちろんファイルは残っています。
git commit または git add したものは復元できます。(.git ディレクトリが残っていれば。)
とりあえず落ち着いて git status で状況を確認しましょう。
なるほど、という事は以前のコミットを取り出した場合はそれ以降の変更した履歴は残っていないという事でしょうか。以前のコミットから今回の rmコマンドを実行するまでの間にかなり変更を加えたので、、
hoshi-takanoriさん
回答ありがとうございます。
git status で確認したところ、deletedと赤い文字がずらっと並んでいる状況です。
これをgit add した後、取り消しのコマンドを実行するという事でしょうか。
git add するとステージング領域に削除したことを記録するので、git add は不要です。
紛らわしくてごめんなさい。
git status の結果、赤い字の deleted: backend/〜 というのがずらっと並んでるんだと思いますが、
backend ディレクトリの中身をまとめて元に戻すには git restore backend でいけると思います。
hoshi-takanoriさん
git restore backendと入力したところ、backend以下が元通りになりました!
本当に助かりました!ありがとうございます!!
復活してよかったです。
豆知識ですが、backend ブランチがなければ maisumakun さんのおっしゃる通り git checkout backend でも大丈夫ですが、git checkout にはブランチの切り替えとファイルの復元の両方の意味があって紛らわしいということで、最近 git switch と git restore が導入されました。(自分もつい git checkout を使っていしまいますが…。)
https://qiita.com/yukibear/items/4f88a5c0e4b1801ee952
hoshi-takanoriさん
助かりました。
そんな経緯があったんですね!勉強になります!
回答1件
あなたの回答
tips
プレビュー