Git-合并提交后查看冲突解决方案

Git-合并提交后查看冲突解决方案,git,visual-studio-2013,merge,team-explorer,Git,Visual Studio 2013,Merge,Team Explorer,一个月前,我从硕士毕业,从事一个大项目。然后我把它合并回主人那里。毫不奇怪,存在合并冲突。我解决了它们并提交了合并。现在几天后,我正在测试一些代码,我发现在master上所做的一些更改已经消失了。问题:是我把冲突解决搞砸了,还是git自动合并了那个更改?从另一个角度来说,在git中有没有一种方法可以查看合并提交,并知道哪些文件存在冲突以及它们是如何解决的? 我正在谈论的图片。(我是视觉的) | ++我的分行 | 主人 git show merge commit id不适合我。我正在团队资源管理

一个月前,我从硕士毕业,从事一个大项目。然后我把它合并回主人那里。毫不奇怪,存在合并冲突。我解决了它们并提交了合并。现在几天后,我正在测试一些代码,我发现在master上所做的一些更改已经消失了。问题:是我把冲突解决搞砸了,还是git自动合并了那个更改?从另一个角度来说,在git中有没有一种方法可以查看合并提交,并知道哪些文件存在冲突以及它们是如何解决的?

我正在谈论的图片。(我是视觉的)

|
++我的分行
|
主人
git show merge commit id
不适合我。我正在团队资源管理器中使用VisualStudio和git。我可以清楚地看到代码在合并提交中丢失了(红色),但我不知道这是冲突解决还是自动git合并。我之所以问这个问题,是因为我想确保master上还有很多其他更改。多谢各位


(我可以恢复合并提交并再次执行,但需要再次解决许多冲突……这是我唯一的选择吗?

正如您所建议的,重新运行合并是您的最佳选择。但是,您不必还原它,您可以使用临时分支重复它。如果
$M
是合并提交,则:

$ git checkout -b merge-redo ${M}^1
$ git merge ${M}^2
也就是说,创建一个指向合并提交的第一个父级的新分支,然后在第二个父级中合并。请注意,为了获得完全相同的冲突,您需要使用与原始合并中相同的
-s
(合并策略)和/或
-X
(策略选项)选项

此时,
git status
显示冲突中的文件,
git log--merge
git log--merge--
可用于查看导致冲突的提交

如果知道某些文件已正确解析,则可以从原始合并冲突中获取它们的解析,如下所示:

$ git checkout $M -- <files ...>
$ git add <files ...>
$git checkout$M--
$git添加
这有助于减少理解大型合并所涉及的精神负担

$ git checkout $M -- <files ...>
$ git add <files ...>