アレクサンダーの答えをもっと簡単な方法で拡張する:はい、あなたが変更を上演していれば、おそらくファイルを元に戻すことができます。 git add
を実行すると、ファイルは実際にGitのオブジェクトデータベースに追加されます。 bar.txtのエントリは、ファイルのオブジェクトIDが含まれていることを
% git add bar.txt
% git ls-files --stage
100644 ce013625030ba8dba906f756967f9e9ca394464a 0 bar.txt
100644 6af0abcdfc7822d5f87315af1bb3367484ee3c0c 0 foo.txt
注:あなたが現時点では、Gitは、インデックス内のファイルを配置します。 Gitは実際にオブジェクトデータベースにファイルを追加しました。この場合、Gitは緩いオブジェクトとしてリポジトリに追加しました:
% ls -Flas .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a
4 -r--r--r-- 1 ethomson staff 21 14 Jun 23:58 .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a
これらのファイルはは、最終的にゴミを収集することます(そう確かに、明示的にgit gc
を実行しないでください)。ありがたいことに、デフォルトでは、これは月の日で行われます。これらのファイルがガベージコレクトされるまで、それらを回復することができます。
これを行う最も簡単な方法は、対話型モードでdownload and install the git-recover
programにある:
% git recover -i
Recoverable orphaned git blobs:
61c2562a7b851b69596f0bcad1d8f54c400be977 (Thu 15 Jun 2017 12:20:22 CEST)
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
> tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
> veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
> commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
Recover this file? [y,n,v,f,q,?]:
git-recover
はコミット(またはインデックス中)でないオブジェクトデータベース内のファイルを検索します。 git-recover
について詳しくは、the blog post announcing itをご覧ください。
ありがとうございます!私はGitがコミットされていないファイルを保持していたという希望をあきらめていました。 紛失して見つかったごみをたくさん持っている人のためのヒントを追加したかったのです。私は100のエントリを持っているので、ハッシュを見つけるために、書いたファイルのある部分を覚えている限り、gitディレクトリにfind-in-fileコマンドを使うこともできます。私は を見つけました。 | xargs grep 'PIECE_OF_MISSING_CODE' -sl | grep 'lost-found' – David
git showは、わかりやすい文字列が表示されていますが、残っているものは駄目です。それは何らかの形でデコードされることを意味しますか、それはそれが何であるか(使用不可能)です。 –
jayarjo
ありがとうございます。あなたは私の日を救っただけです。 – fuz