githubページを作成する の指示に従い、gitサブディレクトリに移動するのを忘れていました。その結果、ドキュメントのディレクトリ全体をgit clean -fdx
で無効にしました。
この恐ろしい間違いを取り消す方法はありますか?
いいえ。これらのファイルはなくなりました。
(Linuxで確認しただけです: git clean calls unlink()
。事前に何もバックアップしません。)
git clean -fdxn
ドライラン を実行し、実行した場合に削除されるファイルを表示します
git clean -fdx
(もちろん、これは事前にこれを知っている場合にのみ役立ちますが、次回は役立ちます)
いいえ。「git clean -fdx」は、gitが作業ディレクトリから追跡しないすべてのファイルとディレクトリを削除します。 Gitはこれらのファイルを追跡しないため、これらのファイルのバックアップはありません。少なくとも通常はそうではありません。
比較的最近これらのファイルの1つで「git add」を実行した場合(ただし、コミットを中止した場合)、「git fsck --lost-found」でそれを見つけることができます。試してみる価値はありますが、期待を高めすぎないでください。
将来的には、まれに数回コミットするよりも、数回コミットすることを検討する必要があります。そうすれば、これらのコミットをリモートにプッシュしなくても、少なくともローカルバックアップができます。
IntelliJ/Android Studioでは ローカル履歴からファイルを復元する が許可されます。
Eclipseで作業している場合、考えられる解決策の1つは、Eclipseのローカル履歴から復元することです。
前述の@kusmaのように、lucky(「git add」を実行したことがある場合)の場合、次を使用してオブジェクト全体を抽出できます。
git fsck | awk '{print $3}' | xargs git show | tee searchresults.log
そのようにして、すべてのタイプのチャンクを探し、差分全体を収集し、失われたファイルを抽出できるファイルに追加します。私の場合、Javaクラス全体を失っていました。
今日この問題がありました。
他の人が言ったように、gitはファイルを保持しません。
これを取り消す唯一の方法は、削除取り消しユーティリティを使用することです。 「extundelete」を使用してすべてを回復しましたが、マイレージ/ファイルシステムは異なる場合があります。
実際にはい!これは可能です!ただし、gitコマンドは使用しません。
必要なのは、 Recuva のようなファイル回復ツールだけです。
削除された場所からのパスに言及し、ファイルを回復させます。
また、このアプリを使用する際の便利な注意事項もいくつかあります。
Advanced Mode
-> Options
-> Actions
-> Restore folder structure
警告!ファイルを紛失(誤って削除)したらすぐに、削除元のドライブに触れない(ファイルの追加/編集)ようにしないでください正常な回復の可能性を高めます。そうしないと、そのファイルが完全に失われる可能性があります。
それが機能する理由:ファイルを削除しても、実際には削除されません。 「削除済み」とマークされているため、次回同じドライブにファイルを追加/更新すると、古いファイルは新しいファイルで上書きされます。しかし、それらが上書きされるまで、ファイルの読み取り(および当然のことながら回復)は可能です。
Jetbrains IDEを使用している場合、ファイルのローカル履歴を表示するオプションがあります。 git clean
を実行した場合、ファイルを再作成し、ファイルのローカル履歴を確認して、そこから復元できます。
単一のファイルで私のために働いた。完全なディレクトリについては、その方法がわかりません。
MSBuildでgitを使用している場合、すべてのファイルをコピーしてからgit clean -xdf
を実行するターゲットを作成しました。これにより、削除したくないものを削除したことに気付いた場合、ファイルを簡単に復元できます。こちらをご覧ください: http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/
幸いなことに、Windows 7の使用中にこの間違いを犯しました。ごみ箱をリサイクルし、削除されたすべてのファイルを強調表示して、[復元]をクリックしました。できた.
リポジトリに追加するはずのコードを使用し、-dfxを使用してファイルを復元できるようにしました。
Debugfs、iノード、testdisk、および表示される他の多くのツールからルックアンドリンクを使用しようとしましたが、この愚かな書き込みが誤って消去したディレクトリは見つかりませんでした。
Sourceforgeから extundelete をダウンロードします。
おそらく e2fslibs-devパッケージ をインストールする必要があります。
実行
$ ./configure
$ make
Srcフォルダー内にextundeleteのバイナリーが生成されます。私の場合、誤ってフォルダーを消去しました。 FOOBARと呼びましょう
私はちょうど走った:
$ Sudo ./extundelete --restore-directory <full path to FOOBAR > <the partition>
RESTORED_FOLDERSという名前のフォルダーを作成しました