解包失败:错误缺少提交,但提交存在。

7

在长时间搜索这个特定问题后,我没有找到其他解决方案,只能在这里发布一个问题:

场景:

  1. 两个远程服务器:git.address-a.comgit.address-b.com
  2. 一个本地仓库,有两个远程仓库:origin连接到git.address-a.comremote-b连接到git.address-b.com
  3. 每天,我会检查是否有东西被推送到remote-b
  4. 如果有任何东西被推送,我会基于主分支(跟踪origin/master)创建一个新的本地分支,从remote-b获取更改并将其合并到我的新分支(例如branch-b)中。
  5. 如果一切正常且没有冲突(如果存在,则手动修复),我会切换回master,并与branch-b合并,然后将master推送到origin/master

问题描述:

这个工作流一直很好用,但由于某些原因,在最近一周的每日集成中,Git在推送时返回了一条消息:

error: unpack failed: error Missing commit 041460e3edf2f00f75022ce864535ffa2331f1c3
To https://myuser@git.address-a.com/git/r/project.git
! [remote rejected] master -> master (n/a (unpacker error))

这个提交(简写:041460)是两周前的,并且在两个远程仓库中都存在。但是,现在,当我从remote-b获取并合并到branch-b的更改后,合并到master并尝试推送到origin时,出现了以下错误。
执行的命令如下:
#git checkout -b branch-b
#git fetch remote-b
#git merge remote-b/master
#git checkout master
#git merge branch-b
#git push origin master

环境:

远程Git版本: 1.7.1 我的机器上的Git版本: 1.9.1 远程Gitblit版本: 1.6.2

尝试过的方法:

  • Rebase
  • 在git指定的提交的父级分支创建新分支并重新进行rebase操作。
  • 删除本地项目,重新执行所有集成步骤。
2个回答

0

可能是您的本地存储库出现了一些错误。尝试使用以下git命令清理不必要的文件并优化本地存储库:

git gc

0

你试过了吗?

git push --no-thin origin master 

还有吗?


很遗憾,我们的DevOps环境现在已经更改了要求,因此这种情况已经改变。现在无法使用相同的条件和服务器再次进行测试。 - Diogo Paschoal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接