git gc、 git repack、 git pruen で余計な git ファイルを削除2020年12月21日 11時58分46秒

git を使っていると次第に git の作業ファイルがたまってくる。これらを削除するには、三つの工程がある。
% git gc # Cleanup unnecessary files and optimize the local repository
% git repack -Ad # Pack unpacked objects in a repository
% git prune # Prune all unreachable objects from the object database
どうも、微妙に目的が違うようだ。個人的な経験だと、git gc で十分事が足りている。また、git 自体がレポジトリに貯ったファイルを把握していて、かなり貯ると、その時点でのコマンドを推薦してくる。

手元のレポジトリで実験。

% du -sh .git
 15M    .git
% du -s .git
15830   .git
% git gc
Enumerating objects: 8175, done.
Counting objects: 100% (8175/8175), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3688/3688), done.
Writing objects: 100% (8175/8175), done.
Total 8175 (delta 5528), reused 6492 (delta 4395), pack-reused 0
% du -s .git
1546    .git
git gc は結構、ディスク容量を減らした。この後、prune と repack を続ける。
% git repack -Ad
Enumerating objects: 8175, done.
Counting objects: 100% (8175/8175), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2554/2554), done.
Writing objects: 100% (8175/8175), done.
Total 8175 (delta 5529), reused 8175 (delta 5529), pack-reused 0
% du -s .git
1546    .git
このレポジトリは小さい為 repack の効果はなかった様だ。
% git prune
% du -s .git
1562    .git
prune も今回は効果無し。