Git の dangling tree なんとかしよう

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 に変わった (- -;
さらに調べる

https://stackoverflow.com/questions/19587840/what-is-a-dangling-tree-new-git-repository-has-dangling-tree-4b825dc642cb6eb9a0

git commit-tree -mempty\ tree 4b825dc642 | xargs git tag empty

んーなるほど
dangling tree がたくさんあるので、コミットハッシュ値をそのまま tag にして全部つぶした

今のところ再発してない

See Also

Copyright © 髭。/ Hugo + hugo-book