如何使用XCode的合并工具解决冲突?

17

我正在进行一次rebase,需要解决一些合并冲突。当我在XCode中打开文件时,我看到了文件中的源代码控制冲突标记(<<<<<<<等)。

如何使用XCode的mergetool以图形化方式解决这些冲突?我想要这个屏幕:

进入图片描述


为什么不直接在文本中解决冲突呢?此外,你是怎么陷入这种情况的?我打赌你是在 Xcode 之外进行了 rebase,对吧? - matt
2
是的,我做了。我应该在Xcode里面做吗?我甚至不知道怎么做...如果你有合并冲突,XCode的行为会根据你进入这种情况的方式而有所不同。 - Mike Miller
1
其实我的观点恰恰相反:不,你不应该在Xcode中完成它,因为你不能这样做,所以你必须在其他地方完成——那么为什么你还想使用Xcode来解决冲突呢?例如,如果你使用SourceTree进行了一次变基,你可以使用SourceTree来解决冲突——或者,就像我说的那样,直接在文本中解决,这通常是最简单的方法。 - matt
3
@matt 请看一下我对你回答的评论。这不是关于需要更好的工具,而是知道有一个可用的工具但不知道如何访问它。说FileMerge是imgur.com/hI82XQE的等效图形界面就像说TextEdit在编辑swift文件时等同于XCode。当解决我的swift文件冲突时,我想使用专为swift文件设计的代码编辑器。XCode具有此功能,我只是不知道如何访问它。 - Mike Miller
1
所以我想这就是对我的问题不幸的回答。正如你一直在说的那样,在重新设置期间解决合并冲突使用那个工具是不可能的。XCode简单地不支持rebase流程。https://dev59.com/1Wsy5IYBdhLWcg3w8CfJ#8737859。显然,启动该工具的唯一方法是使用XCode的UI进行合并,就像我在第一个页面上获取截图时所述:https://www.raywenderlich.com/675-how-to-use-git-source-control-with-xcode-9。如果你可以启动该工具并在文件中使用源代码标记对其进行操作,如同FileMerge一样,那么那将是非常好的。 - Mike Miller
显示剩余4条评论
3个回答

24
这里获取答案。
# Tell system where Xcode utilities live:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

# Set "opendiff" as the default mergetool globally:
git config --global merge.tool opendiff

然后,当 git 告诉你有冲突时,你可以运行 git mergetool,它会打开 XCode 的合并工具(就像问题截图中的那样),然后你可以解决冲突。


这正是我也告诉他的事情。不幸的是,这并不是他想要的答案。 - matt
这对我来说是一个很好的解决方案。 - Mamad Farrahi

5
文件合并工具是一款独立的应用程序,您可以从Xcode菜单中打开它:

输入图像描述


2
请注意,如果您正在使用外部图形化git界面(如SourceTree),您可以将FileMerge指定为图形化合并工具。 - matt
1
FileMerge看起来不像我截图中的样子。它看起来像这样:https://imgur.com/hI82XQE。我正在运行XCode 10.1。我需要以某种方式更新FileMerge吗?我问题截图中的东西不是FileMerge吗? - Mike Miller
我不明白你想要什么。这是在Xcode之外完成的rebase冲突,所以我认为你不会得到与原始截图相同的屏幕。你的imgur截图显示了一个解决合并冲突的美妙界面。或者,就像我之前说的那样,直接编辑文本就可以轻松解决它。问题已经解决。解决冲突并继续前进。 - matt
这个“美妙的界面”没有语法高亮或任何使XCode可用的功能。它只是一个普通的文本编辑器。我想在XCode的编辑器中解决我的合并冲突。我知道可以手动修复所有错误。也可以在TextEdit中编写代码,但是当有更好的工具可以让你的生活更轻松时,为什么要这样做呢?“我想要”的是访问我问题截图中的工具,这将使我的生活更轻松。它存在。我如何访问它? - Mike Miller
2
我确实喜欢你的回答。虽然我不知道如何从XCode访问FileMerge,但感谢你的分享!不幸的是,FileMerge并不是我正在寻找的工具。 - Mike Miller

3
我认为您混淆了Xcode版本控制和合并工具。 您可以使用以下命令查看git更改:
“View> Version Editor> Show Comparison View”。
它会显示提交之前和之后的并排视图。据我所知,这对解决合并冲突没有太大帮助。
如果您遇到像pbxproj文件中的严重合并冲突,则建议使用Visual Studio打开该文件。
或者也许这个?

enter image description here

enter image description here

enter image description here

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接