Xcode项目文件git合并冲突
在Xcode中,避免项目文件中Git冲突的最佳方法是什么?(我使用的是手动git,而不是git的Xcode接口) 我已经从Github克隆了mapbox ios sdk,并对其进行了黑客攻击,现在远程主机已经更改。当我试图将远程更改拉入本地时,合并后项目文件中会出现合并冲突。(具体来说,我指的是.xcodeproj中的project.pbxproj) 我真的不认为项目文件应该放在忽略中,因为如果项目文件中有任何新文件,那么.pbxproj文件似乎会被更改。(或者我完全错了,这个文件应该被忽略?但很明显,它在mapbox ios sdk中并没有被忽略。人们毕竟需要这个项目文件。)但我以前在与另一个合作者的合作项目中也遇到过这种冲突,这使我无法完全使用GitXcode项目文件git合并冲突,xcode,git,Xcode,Git,在Xcode中,避免项目文件中Git冲突的最佳方法是什么?(我使用的是手动git,而不是git的Xcode接口) 我已经从Github克隆了mapbox ios sdk,并对其进行了黑客攻击,现在远程主机已经更改。当我试图将远程更改拉入本地时,合并后项目文件中会出现合并冲突。(具体来说,我指的是.xcodeproj中的project.pbxproj) 我真的不认为项目文件应该放在忽略中,因为如果项目文件中有任何新文件,那么.pbxproj文件似乎会被更改。(或者我完全错了,这个文件应该被忽略?但
我应该找出如何手动解决冲突,还是有更好的方法来处理此问题?.pbxproj将在向项目添加新文件时更改。如果两个或多个协作者同时添加文件(没有先获得彼此的更改),则会发生冲突。在我的项目中,我们通过在添加新文件之前和之后执行以下步骤来避免这种情况:
另外,看到这个堆栈溢出问题,回答非常好:你应该检查我的脚本,现在最好的解决方案是在苹果采取行动之前合并Xcode项目文件 它的功能和工作原理
project.pbxproj
转换为JSON格式对象
,给每个UUID一个绝对路径,并使用路径的MD5十六进制摘要创建一个新的UUID
- 这个json对象中的所有元素实际上都是作为一棵树连接的
- 我们使用树的唯一属性为树的每个节点赋予路径属性;此路径是根节点的绝对路径
- 将MD5十六进制摘要应用于节点的路径
子项
、文件
、PBXFileReference
和PBXBuildFile
列表,并删除这些列表中的所有重复项
- 如果您想了解实现,请参阅xUnique.py中的
方法李>sort\u pbxproj
- 它是从我的修改版移植的,在排序上有一些不同
和PBXFileReference
PBXBuildFile
查看文件了解更多详细信息。在大多数情况下,您可以通过以下代码修复合并,删除git添加的行:
#!/bin/bash
FILE={PRODUCT_NAME}.xcodeproj/project.pbxproj
sed '/======/d' $FILE | sed '/<<<<</d' | sed '/>>>>>/d' > temp
cat temp > $FILE
rm temp
#/bin/bash
文件={PRODUCT_NAME}.xcodeproj/project.pbxproj
sed'/====/d'$FILE | sed'//d'>临时
cat temp>$文件
室温
但是,如果重命名项目组并导致冲突,您将手动删除原始组的额外行。许多网站建议将.gittributes文件与以下内容一起使用:
*.pbxproj merge=union
在尝试使用脚本之前,我们将尝试这种方法。如果我们发现任何问题,我一定会更新这篇文章。另外,如果其他任何人对此方法有意见,请包括。如果这是由于添加了来自两个或多个合作者/分支机构的文件造成的(根据我的经验,到目前为止一直如此,可以通过查看差异来检查),我会这样做:
(我不认为第2步真的有必要,但我觉得更整洁)。您也可以使用Mergepbx手动执行以下操作
我制作了一个应用程序,用于在Xcode项目文件出现问题时修复这些问题。不幸的是,您仍然需要先手动进行一些合并。
我需要在我的分支中获取主代码,因此,我从主代码中提取代码,并且我在.pbxproj文件中进行了更改,主代码具有不同的配置。因此,.pbxproj文件中显示了冲突。请按照以下步骤解决此问题 在Finder中打开.pbxproj 右键单击文件,选择“显示软件包内容”-> 选择.pbxproj文件,然后用文本编辑打开它-> 它将显示冲突线,如下所示
<<<<<<< HEAD"
// head changes
===========
// Your changes
>>>>>>>>
如果一切正常,推送您的代码
git push
看起来这对一些合作者来说是完美的,尽管很麻烦。不过,您提供的链接似乎对大型项目非常有用。在任何情况下,似乎Xcode项目对源代码管理来说都不是很好/事实上,我们只有三个合作者。这不是一个伟大的战略,因为在这里我们希望有有意义的、始终有效的承诺。这是一种可悲的工作方式,你推荐什么工具
git push