2

このファイルを削除したことは確かですが、verify-pack にはまだ表示されています。何を与える?

$ git verify-pack -v .git/objects/pack/pack-5722438014fe04ec9d559810bd7840afb6006858.idx | 並べ替え -k 3 -n | 尻尾-3

bfafbf4c4cd9a5ddbcb637a09c183c6dabe7acde blob 18960384 1061775 9232588 ec890d28afb338b258727f124e0bfbc11f6c0f0d blob 23079936 2279611 1640818 5daf9ca1b4988c240cb9ac9a2d026e5028e9fd8e blob 79966293 3803212 4919563

$ git rev-list --objects --all | grep 5daf9ca1
5daf9ca1b4988c240cb9ac9a2d026e5028e9fd8e DriverLib/json_spirit/Debug/json_spirit_reader.obj

$ git log --pretty=oneline --branches -- DriverLib/json_spirit/Debut/json_spirit_reader.obj

オブジェクトがどのコミットにあるかを確認するために git log を実行すると、何も表示されません。何を与える?

4

1 に答える 1

0

ファイルを削除すると、そのファイルを参照しない新しいコミットのみが記録されます。ファイルを含むこのブランチのすべての以前のコミット (および実際にはリポジトリ内の他のコミット) は、ファイルの blob オブジェクトを引き続き参照する可能性があるため、ファイルの内容はリポジトリから離れません。

リポジトリから (つまり、過去のリビジョンからも) ファイルを完全に削除する必要がある場合は、git filter-branch. このツールは実際にコミットを書き換えるため、鋭いツールであることに注意してください — それを使用してブランチを書き換える前に、書き換えるブランチの元の先端への別のポインターを必ず作成してください —git branchまたはそのgit tagために。

別の考えられる原因は、 reflogを介してアクセス可能なコミットによってファイルがまだ参照されていることです。その場合は、reflog を期限切れにするか、不要なエントリを手動で削除して実行しますgit gc --aggressive

于 2013-06-21T08:04:24.277 に答える