【Git&Gerrit】git 出现 Error : Missing tree 的解决办法

问题:

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

git push --receive-pack='git receive-pack --reviewer xxx@xxx.cn --reviewer xx@xx.cn' 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://xx@121.xx.xx.xx:29418/xxxx_v_2_3.git
 ! [remote rejected] HEAD -> refs/for/master (n/a (unpacker error))
error: failed to push some refs to 'ssh://xx@121.xx.xx.xx:29418/xxxx_v_2_3.git'

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

解决:

解决方法来自 stackoverflow.

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

git push --no-thin origin HEAD:refs/for/master
关键点是 --no-thin 选项. stackoverflow 上的那位答主这么解释的:

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

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

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

stackoverflow 链接如下:

http://stackoverflow.com/questions/16586642/git-unpack-error-on-push-to-gerrit

原文出处:https://blog.csdn.net/liuxu0703/article/details/54289873
————————————————
版权声明:本文为CSDN博主「_Lyux」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuxu0703/article/details/54289873

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值