github ページの作成に関する指示に従っていましたが、git サブディレクトリに移動するのを忘れていました。その結果、ドキュメントのディレクトリ全体をgit clean -fdx
.
このひどい間違いを元に戻す方法はありますか?
16 に答える
いいえ、それらのファイルはなくなりました。
(Linux で確認したところ: git clean が呼び出さunlink()
れ、事前に何もバックアップされません。)
いいえ。「git clean -fdx」は、git が追跡しないすべてのファイルとディレクトリを作業ディレクトリから削除します。Git はこれらのファイルを追跡しないため、これらのファイルのバックアップはありません。少なくとも通常ではありません。
これらのファイルの 1 つに「git add」を比較的最近行った (ただし、コミットを中止した) 場合は、「git fsck --lost-found」で見つけることができる可能性があります。試してみる価値はありますが、あまり期待しないでください。
将来的には、あまり頻繁に数回コミットするよりも、頻繁に数回コミットすることを検討する必要があります。そうすれば、これらのコミットをリモートにプッシュしなくても、少なくともローカル バックアップを作成できます。
上記の @kusma のように、運が良ければ (「git add」を実行したことがある場合)、次を使用してオブジェクト全体を抽出できます。
git fsck | awk '{print $3}' | xargs git show | tee searchresults.log
そうすれば、すべてのタイプのチャンクが検索され、差分全体が収集され、失われたファイルを抽出できるファイルに追加されます。私の場合、Java クラス全体を失っていました。
Jetbrains IDE を使用している場合は、ファイルのローカル履歴を表示するオプションがあります。完了した場合git clean
は、ファイルを再作成し、ファイルのローカル履歴を確認して、そこから復元できます。
単一のファイルで私のために働いた。完全なディレクトリについては、その方法がわかりません。
今日はこの問題がありました。
他の人が言ったように、git はファイルを保持しません。
これを元に戻す唯一の方法は、元に戻すユーティリティを使用することです。「extundelete」を使用してすべてを回復しましたが、マイレージ/ファイルシステムは異なる場合があります。
IntelliJ IDEAまたはAndroid Studioを使用している場合は、簡単に実行できます。削除したのと同じ名前のファイルを作成し、そのファイルのVCS
-> Local History
->Show History
をクリックするだけです。残念ながら、JPEG や PNG 画像などのメディア ファイルでは機能しません。また、現時点では、削除したファイルを 1 つずつ復元することしかできません。しかし、このオプションは私の命を何度も救ってくれたので、ありがたいことにその場所にあります.
Mac を使用していて でバックアップしたTime Machine
場合は、復元できます。
MSBuildでgitを使用している場合は、すべてのファイルをコピーしてから実行するターゲットを作成しましたgit clean -xdf
。このようにして、削除したくないものを削除したことに気付いた場合に、ファイルを簡単に復元できます。こちらをご覧ください:http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/