3

バイナリ ファイル (パス) を git リポジトリに追加し、その後、 Git リポジトリの履歴を書き換えて開発チームを更新し、大きなファイルを削除する で"ACHThesis/preamble.fmt"説明されている方法を使用して、バイナリ ファイル (パス) を削除しました。gitbook で示唆されているように、私も実行しました

rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc

実際、次のように、大きなファイルはコミットによって参照されていないようです。

git log --pretty=oneline -- ACHThesis/preamble.fmt
(no output)

ただし、リポジトリ内の最大のファイルを見ると、

git verify-pack -v .git/objects/pack/pack-6136e671bba3772bdf40ba3306aa249d654
0a117.idx | sort -k 3 -n | tail -1
e4cf847b6815c9833d04f9a449286112718a3926 blob   6771554 2414394 6791333

そしてその正体を見て

$ git rev-list --objects --all | grep e4cf
e4cf847b6815c9833d04f9a449286112718a3926 ACHThesis/preamble.fmt

バイナリ ファイルは明らかにまだ存在しています。どうすれば削除できますか?


私が見たが役に立たなかった質問

4

3 に答える 3

0

git gcデフォルトでは、2 週間以上経過したオブジェクトのみを削除すると思います。--pruneたぶん、オプションで再実行してみることができます

git gc --prune=now
于 2013-05-16T10:17:01.637 に答える
0

私が最終的に得た「解決策」は、すべてを実行した後にリポジトリを複製することでしたfilter-branches-複製されたリポジトリには、パッキング時に削除されたバイナリがありませんでした。

ただし、より良い解決策があると確信しているので、gitに精通した誰かがやってくることを期待して、これを「未回答」のままにしておきます。

于 2013-05-16T13:02:37.670 に答える