14

我已经合并了两个分支。有很多冲突。都解决了。现在我不确定,也许我在解决冲突期间犯了错误。而且我认为没有其他方法可以检查它是否属实——只需再次运行合并,并逐个检查冲突。

这意味着我需要再创建一个分支来存储我的合并结果,对吧?

我可以避免吗?也许可以从git中的某个地方获取所有这些冲突的文件<<<<<<,而无需再次运行合并?======>>>>>>

4

2 回答 2

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>
于 2013-03-15T22:36:04.783 回答
2

是的,这是微不足道的。首先,您需要使用 .找到合并提交的 sha1 id git log。当您执行以下操作时:

git checkout <sha1>^1
git merge <sha1>^2

你将处于无头状态。^n表示提交的第 n 个父级。因此,没有创建分支。您可以更仔细地再次解决冲突,然后

git diff HEAD..<sha1>

查看冲突解决方案是否有任何差异。

顺便说一句,在 git 中分支只是提交的 sha1 的一个人类友好的名称,所以不要害怕尽可能多地创建它们。

PS:如果你在 Windows 下工作,^命令行中的符号是特殊的,你需要将它加倍或引用命令行参数。

于 2013-03-15T23:53:40.767 回答