git 出现 error Missing tree 的处理办法

问题

公司搭建了 gerrit 代码审核服务器.有较低的概率(目前团队中出现过两例),在 git push 提交时,出现如下错误:

git push --receive-pack='git receive-pack --reviewer [email protected] --reviewer [email protected]' review HEAD:refs/for/master
Counting objects: 1, done.
Writing objects: 100% (1/1), 241 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
error: unpack failed: error Missing tree 129d587458f56f4b1f9c492824a97dc717257516
fatal: Unpack error, check server log
To ssh://[email protected]:29418/xxxx_v_2_3.git
 ! [remote rejected] HEAD -> refs/for/master (n/a (unpacker error))
error: failed to push some refs to 'ssh://[email protected]:29418/xxxx_v_2_3.git'

再次提交也还是会出现同样错误.


解决:

使用如下命令即可推送成功:

git push --no-thin review HEAD:refs/for/master

关键点是 –no-thin 选项:

默认情况下 git push 会在向服务器推送时进行优化,以将所发送的包降低到最小. 做法是发送时忽略本地仓库和远端仓库中共有的部分. 即 git push 默认是采用 –thin 选项的.

发生本文中出现的问题,貌似是因为某个 git 对象和服务器不一致了.

这时加上 –no-thin 参数,把该传的都传过去,问题就解决了.

参考的链接

猜你喜欢

转载自blog.csdn.net/import_sadaharu/article/details/80976164