Git の dangling tree なんとかしよう #
先日対応したんだけど 、どうもダメだったらしく、あいかわらず
See "git help gc" for manual housekeeping.
っていわれるので、ひとまず
$ git fsck --full
。。。なんか、dangling tree
ってたくさん出るな
https://git-scm.com/docs/user-manual#ensuring-reliability
They are objects that still exist in the repository but are no longer referenced by any of your branches, and can (and will) be removed after a while with gc. You can run git fsck –no-dangling to suppress these messages, and still view real errors.
んー、suppress って、表示されてるとジャマやから表示しなくなってるだけやんね?
ずっと「git help gc 見れ」って言われ続けるのも業腹なんで、
「宙ぶらりんと言ってるんだから、宙ぶらりんじゃなくすればいいんじゃね?」
と tree 関連ちょっと調べて、試しに
$ git commit-tree -m 'emptry tree' 6c67a0
eaa2a7d8f4694fb5e73523ccfa6dceda38ed9377
ふむ。
で、もっかい git fsck --full
。。。dangling tree が dangling commit に変わった (- -;
さらに調べる
git commit-tree -mempty\ tree 4b825dc642 | xargs git tag empty
んーなるほど
dangling tree がたくさんあるので、コミットハッシュ値をそのまま tag にして全部つぶした
今のところ再発してない