gpt4 book ai didi

Git - 查看 merge 提交后的冲突解决方案

转载 作者:行者123 更新时间:2023-12-05 06:43:24 24 4
gpt4 key购买 nike

我一个月前从 master 分支出来,从事一个大项目。然后我将它 merge 回 master。毫不奇怪,存在 merge 冲突。我解决了它们并提交了 merge 。现在几天后我正在测试一些代码,我发现在 master 上所做的一些更改已经消失了。问题:我搞砸了我的冲突解决,还是 git 自动 merge 了那个变化?换句话说,在 git 中是否有一种方法可以查看 merge 提交并了解哪些文件有冲突以及它们是如何解决的?

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

|
+ <-------------------------+ Merge back to master
| |
+ -- Change that got lost +
| |
+-------------------------> + My branch
|
master

git show merge-commit-id 不是为我做的。我在团队资源管理器中使用带有 git 的 Visual Studio。我可以清楚地看到代码在 merge 提交中丢失了(红色),但我不知道这是冲突解决还是自动 git merge 。我问的原因是因为我对 master 有很多其他更改,我想确保它们仍然存在。谢谢。

(我可以恢复 merge 提交并再次执行,但是会有很多冲突需要再次解决...这是我唯一的选择吗?)

最佳答案

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

$ git checkout -b merge-redo ${M}^1
$ git merge ${M}^2

也就是说,创建一个新分支指向 merge 提交的第一个父级,然后 merge 到第二个父级。请注意,您需要使用相同的 -s ( merge 策略)和/或 -X (策略选项)原始 merge 中使用的选项以获得完全相同的冲突。

此时,git status显示冲突的文件和git log --mergegit log --merge -- <files>可用于查看导致冲突的提交。

如果您知道某些文件已正确解析,您可以像这样从原始 merge 冲突中获取它们的解析:

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

这有助于减少理解大型 merge 所涉及的精神负担。

关于Git - 查看 merge 提交后的冲突解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com