Gerrit无法推送。错误:没有共同的祖先。

3

尝试推送到Gerrit,但是出现了“无共同祖先”的错误。

nolan@nolan-pc:~/pac-man$ git push ssh://1KX2@review.pac-rom.com:29418/android_vendor_pac HEAD:refs/for/pac-6.0
Counting objects: 8, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 6.63 KiB | 0 bytes/s, done.
Total 8 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done    
To ssh://1KX2@review.pac-rom.com:29418/android_vendor_pac
 ! [remote rejected] HEAD -> refs/for/pac-6.0 (no common ancestry)
error: failed to push some refs to 'ssh://1KX2@review.pac-rom.com:29418/android_vendor_pac'

你确定你的HEAD是远程pac-6.0分支的下游吗?很可能你的目标分支名称也不正确。 - undefined
看起来HEAD没有从pac-6.0分支开发。请检查一下当前的版本是什么。 - undefined
4个回答

8

我知道这可能需要一些时间,但在我的情况下,我使用Gerrit界面的自动变基来解决简单的冲突。也许这会在我的本地仓库和服务器仓库之间引入一些更改。
我只需要使用git同步就可以获取这些更新。
对我而言,使用git pull --rebase origin master命令有效。


这个对我也适用:git pull --rebase origin master - undefined
因为之前有其他人提交过,但是我没有拉取最新的代码。 - undefined
还是Stack Overflow吧!( ̄▽ ̄)d - undefined

4
一个解决这个问题的“简单”的方法是,如果你推送到一个全新的仓库并且对于任何可能带来项目代码现在状态的旧git历史没有兴趣。
然后,一种解决方案是从Gerrit中启动一个新文件夹,然后克隆(空)项目。该文件夹将与此Gerrit项目具有共同的祖先。然后,您可以使用git add工作将源文件添加到该新文件夹中,直到满意为止(这是繁琐的部分),留出任何旧的.git文件夹,最后尝试进行推送。这将把你的项目推到Gerrit上,并从此开始记录git历史。

1
这个有点用,但我怀疑大多数人想找到一种将历史记录合并并允许推送结果的方法。 - undefined

2

2
这是对情况的良好诊断,但最好能提供解决方案。如何将历史记录合并? - undefined
链接(Gerrit文档)提供了一个解决方案:“要解决这个问题,您应该检查您的推送规范,并验证您是否将提交推送到正确的项目。”通常情况下,这就是这种情况的问题所在。如果那个人(或其他人)回复时提供了更多信息,我本可以尝试提供更多帮助。 - undefined
我在第一次查询中看到了那些文档,但它们并不相关。我试图将一个托管在GitHub上的项目导入到由Linux Foundation管理的存储库中。如果你愿意,你可以在这里查看我的笔记和最终解决方案,并将它们纳入你的回答中:链接 - undefined

0

看起来你正在推送到错误的分支。使用正确的分支就可以了。


1
你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

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