我合并了两个分支机构。有很多冲突。解决了所有问题。现在我不确定,也许我在冲突解决期间犯了错误。而且我没有看到没有其他方法可以检查是否为真 - 只需再次运行合并,并逐个检查冲突。
这意味着我需要再创建一个分支来存储合并的结果,对吗?
我可以避免吗?也许有可能从git中的某个位置获取所有这些<<<<<<
,======
,>>>>>>
的所有冲突文件,而不再次运行合并?
答案 0 :(得分:4)
如果你想看看合并你能做什么
git show <hash-of-merge-commit>
如果你想重做整个合并,你可以
git checkout <branch-that-you-merged-to>
git reset --hard <hash-of-the-commit-just-before-the-merge>
git merge <branch-that-you-merged-in>
如果你想重做合并,然后将第二次合并与第一次合并比较(考虑是否更好),你可以这样做:
git checkout <branch-that-you-merged-to>
git rev-parse HEAD
这为您提供了当前提交的哈希值。记下来。然后做
git reset --hard <hash-of-the-commit-just-before-the-merge>
git merge <branch-that-you-merged-in>
完成合并,然后执行此操作以比较合并
git difftool <hash-of-commit-noted-above>
如果您认为原始合并更好,您可以
git reset --hard <hash-of-commit-noted-above>
答案 1 :(得分:2)
是的,这是微不足道的。首先,您需要使用git log
找到合并提交的sha1 id。当你做下一个:
git checkout <sha1>^1
git merge <sha1>^2
你将处于无头状态。 ^n
表示提交的第n个父级。因此,不会创建任何分支。您可以更仔细地再次解决冲突,然后
git diff HEAD..<sha1>
查看冲突解决方案是否存在任何差异。
顺便说一下,在一个git中只是一个人类友好的名字,用于提交的sha1,所以不要害怕创建它们。 PS:如果你在Windows中工作,命令行中的^
符号是特殊的,你需要加倍它或引用命令行参数。