0

誤ってローカルディレクトリをローカルGitリポジトリに追加しました。

git add dirName

そのディレクトリに20個ほどのファイルを追加しました。私はそれらを追加したくありませんでした。それらはこれまで追加されたことがなく、私はそれらをコミットしませんでした。代わりに、次のように削除しました。

git rm -rf dirName

これにより、リポジトリからそれらが正常に削除されましたが、残念ながら、そのディレクトリもディスクから削除されたように見えます。それらは私のごみ箱にはありません。

それらのファイルを取り戻す方法はありますか?もちろんバックアップはありますが、前回のバックアップ以降、ファイルにかなりの変更を加えました。

4

2 に答える 2

6

受け入れられた答えは完全に正確ではないと思います。確かgit rmにファイルをインデックスから削除しますが、通常はしばらくの間Gitのオブジェクトデータベースに残ります。ガベージコレクションを強制しない限り、それはです。

ぶら下がっている塊ぶら下がっている木git fsckを取り戻すために走ってみましたか?

$ git init test
Initialized empty Git repository in D:/DOCUME~1/T012345/LOCALS~1/Temp/test/.git/

$ echo baz > foo/bar.txt

$ git add -Av
add 'foo/bar.txt'

$ git rm -rf *
rm 'foo/bar.txt'

$ git fsck
notice: HEAD points to an unborn branch (master)
Checking object directories: 100% (256/256), done.
notice: No default references
dangling blob 76018072e09c5d31c8c6e3113b8aa0fe625195ca

$ git cat-file -p 76018072e09c5d31c8c6e3113b8aa0fe625195ca
baz
于 2012-11-22T08:53:45.377 に答える
0

いいえ、ありません

git rm -rf dirName

のようなものです

rm -rf dirName

これも元に戻すことはできませんが、ステージングファイルも削除されるため、ファイルを元に戻す方法はありません。次回はgitrm--cached dirNameを使用します。これにより、ステージからのみ削除され、ディスクからは削除されません。

于 2012-11-20T15:55:13.403 に答える