5

私は最初の git リポジトリをセットアップしていて、次のことを行いました。

git init

リモートサーバーをセットアップするためのいくつかの git-config が続きます。私はそれからやった

git add directory
git status

おっと、不要なファイルをいくつか追加しました。よし、git rm してコミット リストからディレクトリを削除し、最初からやり直す必要があります。

git rm directory

この時点で、コンソール メッセージとドキュメントを適切に読むべきでしたが、読んでいませんでした。だから私は走った

git rm directory -r -f

は?私のディレクトリはどこに行きましたか? ああ、わかりました。git が削除したので、もう「そこにはありません」。それでは、試してみましょう。

git status
git reset --hard

成功せず、いくつかのエラー メッセージが表示され、一連の Web 検索を行った後、私は自分の失敗に気付きました。使うべきだった

git rm -r --cached directory

コミットリストからは削除されますが、ファイルシステムからは削除されません。おっと。幸いなことに、重大な損失はありませんでした。

これから回復する方法があるはずですが、私の検索のほとんどは「--cached」オプションを指すことになります...そしてそれは少し遅れています. コミットがないので、ファイルを元に戻したりプルしたりすることはできません (ローカル コピーしかありませんでした)。

それらのファイルを取り戻すことは可能ですか?

4

2 に答える 2

6

コミットがないため、ファイルを元に戻す/プルすることはできません (ローカル コピーしかありませんでした)。

それらのファイルを取り戻すことは可能ですか?

答えはノーです。

コミットがないため、ソース管理を使用していません。

ファイルはオブジェクト データベースに入力されませんでした。一般に、コミットされていないものを git に戻すことはできません。ほとんどの場合、以前にコミットされたものを元に戻すことができます。

経験則: 頻繁にコミットする

編集

こちらもご覧ください

git reset --hard今日もコミットされていない変更がありながら、今日も誤ってレポを実行しました。それを取り戻すために、私は を実行しました。git fsck --lost-foundこれにより、参照されていないすべてのブロブが に書き込まれました<path to repo>/.git/lost-found/。ファイルはコミットされていないためother<path to repo>/.git/lost-found/. そこから、コミットされていないファイルを確認し、BLOB をコピーして名前を変更できます。

注: これは、保存するファイルを( を使用して)インデックスに追加した場合にgit add .のみ機能します。ファイルがインデックスにない場合、それらは失われます。

于 2012-01-31T12:34:12.910 に答える
2

私はまったく同じ間違いをしましたが、以前に git インデックスにファイルを追加したにもかかわらず、「git fsck --lost-found」を使用してファイルを復元できませんでした。幸いなことに、IDE の「ローカル履歴」追跡オプションを覚えていたので、それを使用して、問題なくライブラリ バイナリ以外のすべてのコードを回復しました :)

于 2013-01-01T16:05:54.967 に答える