2016-12-15 38 views
0

私は新しいプロジェクトに取り組みました。すべてのファイルをローカルのgitリポジトリに追加しましたgitからファイルを復元

git add . 

私はコミットしませんでした。私は間違いなくgitをリセットします。

git reset --hard 

どのようにファイルを復元することができますか?私は、その原子がファイルを保持していただけでなく、そこにファイルを保存していないことを望みました。気にしないでください、その原子は私のすべてのファイルを閉じます。

+1

'私は誤ってgitをリセットしました。' ... 'git reset -hard'と入力するのは少しうまくいかないようです。いずれにしても、作業ディレクトリとインデックスの両方から変更がなくなったため、IDEにバックアップがない場合は不運になる可能性があります。 –

答えて

2

ファイルgit addファイルの場合、gitは、ファイルをリポジトリ(.gitディレクトリ)にオブジェクトとして保存します。あなたのファイルはおそらくまだぶら下がっています。一方、git reset --hardコマンドを実行すると、という名前の情報が失われています。です。

あなたが実行することにより、オブジェクト自体を見ることができます:

のようなものを生成します
find .git/objects -type f 

:あなたはのように、 git cat-fileコマンドを使用して、それらのオブジェクトの内容を見ることができます

.git/objects/67/6e8ff99e42b61f96bb0107fa1dff59594eba07 
.git/objects/7c/45d8f7d987c584a8d61a8d75431ddd4f1ba52f 

git cat-file -p 7c45d8f7d987c584a8d61a8d75431ddd4f1ba52f 

オブジェクトIDは、オブジェクトの最初のレベルのディレクトリの2文字とそれに続くファイル名のすべての文字。

の内容をすべてのファイルのに復元するスクリプトを書くのはかなり簡単ですが、事実の後に手動で名前を変更する必要があります。

+0

次は短いデモです:https://asciinema.org/a/2jj40llsgjjrkvp8nfxqqt5s1 – larsks

関連する問題