在长时间搜索这个特定问题后,我没有找到其他解决方案,只能在这里发布一个问题:
场景:
- 两个远程服务器:git.address-a.com和git.address-b.com
- 一个本地仓库,有两个远程仓库:origin连接到git.address-a.com,remote-b连接到git.address-b.com
- 每天,我会检查是否有东西被推送到remote-b。
- 如果有任何东西被推送,我会基于主分支(跟踪origin/master)创建一个新的本地分支,从remote-b获取更改并将其合并到我的新分支(例如branch-b)中。
- 如果一切正常且没有冲突(如果存在,则手动修复),我会切换回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操作。
- 删除本地项目,重新执行所有集成步骤。