分享

git 出现 error Missing tree 的处理办法

 ala咪s 2017-06-15
标签: gitgerrit
2017-01-11 14:16 639人阅读 评论(0) 收藏 举报
 分类:

问题:

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

[plain] view plain copy
  1. git push --receive-pack='git receive-pack --reviewer xxx@xxx.cn --reviewer xx@xx.cn' review HEAD:refs/for/master  
  2. Counting objects: 1, done.  
  3. Writing objects: 100% (1/1), 241 bytes | 0 bytes/s, done.  
  4. Total 1 (delta 0), reused 0 (delta 0)  
  5. error: unpack failed: error Missing tree 129d587458f56f4b1f9c492824a97dc717257516  
  6. fatal: Unpack error, check server log  
  7. To ssh://xx@121.xx.xx.xx:29418/xxxx_v_2_3.git  
  8.  ! [remote rejected] HEAD -> refs/for/master (n/a (unpacker error))  
  9. error: failed to push some refs to 'ssh://xx@121.xx.xx.xx:29418/xxxx_v_2_3.git'  

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


解决:

解决方法来自 stackoverflow. 

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

[plain] view plain copy
  1. git push --no-thin review HEAD:refs/for/master  

关键点是 --no-thin 选项. stackoverflow 上的那位答主这么解释的:

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

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

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

[plain] view plain copy
  1. git push --no-thin review HEAD:refs/for/master  


stackoverflow 链接如下:

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多