Git上的project.pbxproj合并冲突 - Xcode iOS

10

虽然我已经在这个论坛中读到过类似的评论,但我还没有找到一种适合团队协作的无缝方法。

如果你知道我的意思,你可能已经发现使用git和Xcode中的project.pbxproj文件非常麻烦,即使你在不同的文件中工作。

比如说,

  • A开发人员:创建了Foo文件夹,并将foo.swift添加到项目中。
  • B开发人员:创建了Bar文件夹,并将bar.swift添加到项目中。

不同的路径......但是你知道,会冲突!而且你可能也注意到,不包括project.pbxproj是不可行的。

所以我的问题是:你如何以专业的方式处理这个问题,使用Git流程,最简单的方法。

非常感谢大家。

附注:我目前正在使用Bitbucket和SourceTree。

附注2:如果可能的话,我想避免使用命令行和手动文件编辑。


为什么project.pbxproj很特殊?任何文件都可能发生冲突。 - trojanfoe
pbxproj文件的问题在于,虽然它是一个文本文件,但其结构却非常混乱,在其中解决合并冲突可能会非常痛苦。例如,一个有问题的合并可能会在一个难以理解的文件中引发1k个冲突(到处都是uuid作为引用等)。 - droussel
3个回答

10
创建一个 .gitattributes 文件并添加以下行: *.pbxproj merge=union 合并将自动进行,您无需进行任何操作。
或者,您可以尝试 mergepbx,它可以执行更加智能的合并。

5
尝试过了,但这并不是万无一失的。我遇到了一个问题,即Xcode项目无法再打开,需要手动合并。 - Primoz990
1
@Primoz990 这种情况会发生,因为有时合并两个(联合)可能会遗漏一些逗号等内容。然后您需要手动修复它。因此,手动操作有时更好。 - Shamendra

3
  1. 只有一个开发人员在“main-develop”分支上创建新文件。
  2. 将新文件推送到“main-develop”。
  3. 其他开发人员在拉取后实施这些文件。

1
我是Kintsugi的维护者之一,这是一个智能合并工具,可以自动解决99.9%在project.pbxproj文件中出现的冲突。
readme文件还包含设置它为Git合并驱动程序的说明,因此每当*.pbxproj文件中出现冲突时,它将自动应用。我不知道如何从Sourcetree进行此操作,但大多数情况下,在设置完成后,您将不必再次使用命令行。

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