git - 重复父级

时间:2011-09-20 18:09:03

标签: eclipse git egit

我似乎设法使用eGit(Eclipse的git客户端,由JGit提供支持)与两个重复的父级进行提交。

SS

第二个父母导致我们无法摆脱的绿色“分支无处”。

我一直在Google上搜索一些方法来执行一些手术来删除额外的父母, 但无济于事。

运行cat-file我得到:

$ git cat-file -p 26dc6a5b44373f766d81513ab84c5eecaf876736

tree 527df208ee66f52bc414948b1de0fa6607cfb81c
parent bc9d55d0451b325b4ad5a758be8b30c1418b3af9
parent bc9d55d0451b325b4ad5a758be8b30c1418b3af9
author Roy Truelove <roy.truelove@xxxx.com> 1316457571 -0400
committer Roy Truelove <roy.truelove@xxxx.com> 1316457571 -0400

我正在分享这个回购,这个问题已经推出,我肯定会对解决方案的复杂性做出贡献。

谢谢git黑客, 罗伊

PS - 如果我需要执行eGit无法提供的功能,我确实可以命令行访问此存储库(cygwin)

2 个答案:

答案 0 :(得分:1)

要从提交中删除重复的父级,您可以执行以下操作:

git replace <sha1> $(git cat-file commit <sha1> | uniq | git hash-object -t commit -w --stdin)

使用重复父级的提交已暂时替换为不包含重复父级的新提交。您现在可以检查gitk显示问题是否已经消失。

为了永久替换提交,您可以使用git filter-branch。请注意,此时您将重写历史记录。所有参与此项目的开发人员都必须了解这一点,以便他们也可以将本地工作/副本重新/重置为新历史记录。

答案 1 :(得分:1)

您可以使用git filter-branch重写历史记录;重复的父母将自动得到纠正。