Eclipse git-重复父级
我似乎已经通过使用eGit(Eclipse的git客户端,由JGit提供支持)成功地实现了对两个重复父级的提交 第二个家长导致了我们无法摆脱的绿色“无处可去” 我一直在谷歌上搜索一些方法,在承诺移除额外的父母时进行一些手术, 但是没有用 运行我得到的cat文件:Eclipse git-重复父级,eclipse,git,egit,Eclipse,Git,Egit,我似乎已经通过使用eGit(Eclipse的git客户端,由JGit提供支持)成功地实现了对两个重复父级的提交 第二个家长导致了我们无法摆脱的绿色“无处可去” 我一直在谷歌上搜索一些方法,在承诺移除额外的父母时进行一些手术, 但是没有用 运行我得到的cat文件: $ git cat-file -p 26dc6a5b44373f766d81513ab84c5eecaf876736 tree 527df208ee66f52bc414948b1de0fa6607cfb81c parent bc9d
$ 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 cat文件-p 26dc6a5b44373f766d81513ab84c5eecaf876736
树527df208ee66f52bc414948b1de0fa6607cfb81c
母bc9d55d0451b325b4ad5a758be8b30c1418b3af9
母bc9d55d0451b325b4ad5a758be8b30c1418b3af9
作者罗伊·特鲁洛夫1316457571-0400
提交人Roy Truelove 1316457571-0400
我正在分享这个回购协议,这个问题已经被推了出来,我相信这会增加解决方案的复杂性
感谢git黑客,
罗伊
PS-如果我需要执行通过eGit不可用的功能,以便从提交中删除重复的父项,我确实可以使用此存储库(cygwin)的命令行访问权限。您可以执行以下操作:
git replace <sha1> $(git cat-file commit <sha1> | uniq | git hash-object -t commit -w --stdin)
git replace$(git cat file commit | uniq | git hash object-t commit-w--stdin)
具有重复父级的提交已临时替换为不包含重复父级的新提交。您可以检查gitk显示问题现在是否已经解决
为了永久替换提交,可以使用git过滤器分支。请注意,此时您将重写历史。所有参与此项目的开发人员都必须了解这一点,以便他们也可以将本地工作/副本重新设置为新的历史记录。您可以使用
git filter branch
重写历史记录;重复的父项将被自动更正。您确定eGit中没有错误吗?可能是,但即使它是eGit中的错误,也可能是回购协议本身的某个古怪状态被eGit表现得很糟糕。如果我能修复这个奇怪的状态,它应该可以解决这个问题。git cat file-p对提交说什么?drizzd-谢谢-我在问题中添加了cat file的输出,你知道有问题的提交是使用EGit/JGit还是使用命令行git进行的吗?谢谢drizzd-我在存储库的副本上运行了该命令-它创建了一个替换(git cat file-p只有一个父级),但是当我在eGit中加载存储库时,它仍然显示两个父级。也许eGit不支持替换提交。。(?)是的,eGit可能不支持它。事实上,我甚至没有意识到你的问题是eGit而不是gitk。无论哪种方式,经过过滤器分支后,问题都应该消失。根据Josh的回答,filter branch将自动修复此特定问题,即使您没有创建替换提交。