我似乎设法使用eGit(Eclipse的git客户端,由JGit提供支持)与两个重复的父级进行提交。
第二个父母导致我们无法摆脱的绿色“分支无处”。
我一直在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)
答案 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
重写历史记录;重复的父母将自动得到纠正。