150

github ページの作成に関する指示に従っていましたが、git サブディレクトリに移動するのを忘れていました。その結果、ドキュメントのディレクトリ全体をgit clean -fdx.
このひどい間違いを元に戻す方法はありますか?

4

16 に答える 16

158

いいえ、それらのファイルはなくなりました。

(Linux で確認したところ: git clean が呼び出さunlink()れ、事前に何もバックアップされません。)

于 2011-06-07T15:03:16.007 に答える
59
git clean -fdxn

ドライランを実行し、実行した場合に削除されるファイルを表示します

git clean -fdx

(もちろん、これは事前に知っている場合にのみ役立ちますが、次回は)

于 2013-01-11T17:15:01.743 に答える
21

いいえ。「git clean -fdx」は、git が追跡しないすべてのファイルとディレクトリを作業ディレクトリから削除します。Git はこれらのファイルを追跡しないため、これらのファイルのバックアップはありません。少なくとも通常ではありません。

これらのファイルの 1 つに「git add」を比較的最近行った (ただし、コミットを中止した) 場合は、「git fsck --lost-found」で見つけることができる可能性があります。試してみる価値はありますが、あまり期待しないでください。

将来的には、あまり頻繁に数回コミットするよりも、頻繁に数回コミットすることを検討する必要があります。そうすれば、これらのコミットをリモートにプッシュしなくても、少なくともローカル バックアップを作成できます。

于 2011-06-07T15:03:10.303 に答える
16

上記の @kusma のように、が良ければ (「git add」を実行したことがある場合)、次を使用してオブジェクト全体を抽出できます。

git fsck | awk '{print $3}' | xargs git show | tee searchresults.log

そうすれば、すべてのタイプのチャンクが検索され、差分全体が収集され、失われたファイルを抽出できるファイルに追加されます。私の場合、Java クラス全体を失っていました。

于 2013-11-09T16:00:54.153 に答える
16

Jetbrains IDE を使用している場合は、ファイルのローカル履歴を表示するオプションがあります。完了した場合git cleanは、ファイルを再作成し、ファイルのローカル履歴を確認して、そこから復元できます。

単一のファイルで私のために働いた。完全なディレクトリについては、その方法がわかりません。

于 2018-06-25T15:37:43.510 に答える
9

今日はこの問題がありました。

他の人が言ったように、git はファイルを保持しません。

これを元に戻す唯一の方法は、元に戻すユーティリティを使用することです。「extundelete」を使用してすべてを回復しましたが、マイレージ/ファイルシステムは異なる場合があります。

于 2011-06-11T10:08:04.880 に答える
5

IntelliJ IDEAまたはAndroid Studioを使用している場合は、簡単に実行できます。削除したのと同じ名前のファイルを作成し、そのファイルのVCS-> Local History->Show Historyをクリックするだけです。残念ながら、JPEG や PNG 画像などのメディア ファイルでは機能しません。また、現時点では、削除したファイルを 1 つずつ復元することしかできません。しかし、このオプションは私の命を何度も救ってくれたので、ありがたいことにその場所にあります.

于 2021-05-21T22:35:53.437 に答える
5

Mac を使用していて でバックアップしたTime Machine場合は、復元できます。

于 2020-03-27T03:53:12.750 に答える
1

MSBuildでgitを使用している場合は、すべてのファイルをコピーしてから実行するターゲットを作成しましたgit clean -xdf。このようにして、削除したくないものを削除したことに気付いた場合に、ファイルを簡単に復元できます。こちらをご覧ください:http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/

于 2012-11-05T19:54:06.873 に答える