@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

git fetch, pullで fatal: git fetch-pack: expected ACK/NAK, got 'ERR want ... not valid'

GitBucketを使っていて、clone/pull/fetchするときにエラーが出るようになった。 サーバーのリポジトリgit fsck -> git gcを実行するとエラーが出ずに実行できるようになった。

状況

  • クライアント
$ git clone gitbucketのリポジトリURL
Cloning into 'リポジトリ名'...
fatal: git fetch-pack: expected ACK/NAK, got 'ERR want コミットのSHA1らしきもの not valid'
fatal: The remote end hung up unexpectedly

このあたりで git fsck を叩いてみようと気づく。

やったこと

  • cd <gitbucket.home>/repositories/<group>/<repo_name>.git
  • git fsck たくさんの dangling commit/tree が出力された
  • git gc
  • git fsck たくさんの dangling commit/tree が出力されたままだった
  • gitbucket経由でcloneしたところ成功した。

GitBucketのUIでもSettings -> Danger Zoneから Garbage collectionボタンにて実行できるはずなので、全く同じ問題が再発した場合は解決できるかもしれない。