2013-01-23 13 views
14

私のローカルマシンでは、フォルダからファイルを削除しました。'git rm -rf'の後に段階的ですがコミットされていないファイルを回復します

git init 
git add --all 

その後、私は書いた(なぜ、私に聞かないでください!:))

git rm -rf 

私はまだ、コミットされません。今私のプロジェクトに空のフォルダがあります。 .gitフォルダには、53Mbのファイルを持つobjectsがあります。

ファイルを復元するにはどうすればよいですか? Drill DiscやStellarのようなプログラムを試しましたが、ファイルが見つかりませんでした。 GITからロールバックすることはできません。

紛失したファイルを復元するにはどうすればよいですか?

+0

"元に戻す"ツールを使用して元の状態に戻らないと、それらは消えてしまいます。 – Sven

+2

http://stackoverflow.com/questions/5788037/recover-from-git-reset-hard/6780036#6780036これは役に立つかもしれません – pktangyue

答えて

10

ホープ(更新)使用git fsckではなく、それはあなたが一度gitリポジトリに追加したファイルを取得するための組み込みコマンドです。コマンド処理後の

git fsck --lost-found --unreachable 

、取得したファイルは、SHA256ハッシュのファイル名を指定して、.git/lost-found/otherに配置されます。元の名前はまだ失われていますが、内容は戻ってきます。


あなた.git/objectsディレクトリ内のファイルを見つけることができます。

あなたの失われたファイルの内容を取得するために

git cat-file -p 2fae996 

を実行することができ、.git/objects/2f/ae996f8f8f9298b41ba4fdbac3d62014f9579eオブジェクトがあるとします。

申し訳ありませんが、私はあなたのディレクトリを再構成することやこれを自動的に行うことについては考えていません。

+0

+1:うわー、確かに。奇妙なことに、ファイルはそこにありますが、通常のgitコマンドを使用してアクセスすることはできません。 –

+0

私はディレクトリについて心配しませんが、私はファイルが必要です。 "git cat-file" - これは* nixの "cat"コマンドのようなものですか? ファイルを別のディレクトリに保存するにはどうすればよいですか? – user2003024

+0

通常のunixコマンドのようにリダイレクトで保存できます。 'git cat-file object>/path/to/where/you/want/save/it'という名前ですが、ファイル名に関する情報がないので、本当に良いアイデアではないと思います。 – dyng

1

あなたが試してみました:

git reset --hard 

を?作品:)

+0

'git rm -rf'の後に、あなたは安全にハードリセットを行うことさえできます。 – Flavius

+1

-1: 'rm -rf'が使われている場合にのみ動作します。説明については[私の答え](http://stackoverflow.com/a/14475121/572644)を参照してください。 –

+1

このコマンドは、コードを最後のコミットに変更し、変更されたすべてのファイルを削除します。 –

関連する問題