更新:git prune
問題を「解決」し、それらのルーズオブジェクトを削除します
(デフォルトでは、2週間以上経過したルーズオブジェクトのみをgit gc
呼び出しgit prune
ます)。
ただし、OPマイケル・ドノヒューとしてがコメントで言及しているように、
緩いオブジェクトを2週間保持する安全面が好きです。戻って古いリビジョンを確認したいので、このソリューションはあまり好きではありません。
私はgitのサイズやパフォーマンスに問題はありません。データベースを圧縮しても効果がない場合でも、データベースの圧縮を要求するのは「git gui」だけです。
元の答え:
「git gc
」すべての緩いオブジェクトを削除しないという問題は以前に報告されています(2008年後半、「git gc
」は緩いオブジェクトを削除しないようです) "
git gc
2週間以上経過した緩いオブジェクトのみを削除します。本当に削除したい場合は、git pruneを実行してください。
ただし、実行時に他のgitプロセスがアクティブにならないようにしてください。そうしないと、何かを踏む可能性があります。
" git gc
"は、到達不能になり、現在パックに入っていたオブジェクトをアンパックします。
その結果、gitリポジトリで使用されるディスク領域の量は、実際にファイルシステムでフルに近い状態で実行されている誰かが追跡リポジトリから多数のブランチを削除する「」操作の後に劇的に増加git gc
する可能性があります。 、次に「git gc
"を実行すると、非常に不愉快な驚きが生じることがあります。
[
例:]
古いブランチは、などのタグを介して予約されていnext-20081204
ます。リポジトリの
ローカルコピーをlinux-next
毎日更新すると、これらの古いブランチタグが大量に蓄積されます。
その後、それらのシリーズ全体を削除して実行するとgit-gc
と、操作にかなりの時間がかかり、使用されるブロックとiノードの数が大幅に増加します。
それらは " git prune
"の後に消えますが、私がこのハウスキーピング操作をするとき、私はしばしば--yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repository
"git gc"へのオプションを望んでいました。
あなたの場合、「git prune
」は役に立ちますか?
(おそらくgc.pruneexpire
、上記の動作が発生するために必要な構成変数で「今」を使用します)。
あなたも持っています(同じスレッドから):
repack -a -d -l
小文字の「a」に注意してください。
git-gc
到達不能なオブジェクトがアンパックされる原因となる大文字の 'A'でrepackを呼び出します。少し 'a'は、自分が何をしているかを知っていて、到達できないオブジェクトをgitにドロップさせたい人向けです。