Git,XIBs,合并

8

我正准备从主分支开始一个git分支,以向我的应用程序添加一些功能,这也涉及到一些接口的添加。

然而,我已经有一个分支用于其他一些功能,这也涉及到一些接口的添加。

当我完成它们时,我能否将这两个分支合并到主分支?是否有一些良好的做法来按一定方式结构化xib文件,以便容易合并后续更改?

2个回答

6
假设我有一个选项卡视图,在一支分支中有三个选项卡,在另一支分支中也有三个选项卡,其中两个选项卡是相同的,而另一个不同,在合并后,你可能会遇到冲突,如果涉及选项卡定义的修改行相同的话。
只有在手动解决合并时,如果你错误地保留了额外的选项卡定义,才会显示四个选项卡。
请查看Git中无痛解决合并冲突 ,获取有关解决合并冲突的出色文章。

3-way merge


话虽如此,特别是关于xibs的内容,它的呈现似乎很好:

自Interface Builder 3版本以来,已添加了一个新的文件格式(扩展名为.xib),它在功能上与.nib完全相同,只是它存储在一个平面文件中,使其更适合存储在版本控制系统中,并可以通过诸如diff之类的工具进行处理。

但是this thread总结了实际感受:

Git如何能够合并对XIB的更改?
XIB的结构不是线性的;不能保证您只需交换XIB的某些部分即可得到可用的XIB。
除非Git对苹果公司附近的XIB有了解,否则我不认为合并能够保证正常工作。

如果发生冲突,在添加合并解决方案之前,您需要多进行一步操作,即在XCode4编辑器中打开修改后的.xib文件并检查是否一切仍然正常。

XCode4 xib file Editor

完成视觉检查后,通过 rerere 记录合并决议, 以便将来 可能自动解决

谢谢。是的,我了解git中的冲突解决,但这个问题不是关于git本身的,而是关于git中的xibs(xibs是Mac OS X应用程序的界面,在可视化编辑器Interface Builder中创建,它们几乎不可能阅读)。 - Ibolit
@Ibolit:我明白了。那似乎只留下了额外的可视化检查步骤,然后使用 git rerere 记录合并解决结果。更多信息请参见我的更新答案。 - VonC
上述文章讨论了使用meld,这是一种非OSX兼容的差异合并工具。你有没有什么可以替代它的Mac工具推荐? - abbood
@abbood 我没有Mac的直接经验,但是http://stackoverflow.com/questions/187064/graphical-diff-for-mac-os-x可能有所帮助(结合http://www.jotlab.com/2009/11/16/how-to-use-filemerge-with-git-as-a-diff-tool-on-osx/)。或者https://dev59.com/BHRB5IYBdhLWcg3wCjrO - VonC
谢谢Von,仅供参考,我决定使用diffmerge(而不是预装在xcode中的filemerge)...我发现它更强大(例如...它可以进行同一行比较,而filemerge则不能)...话虽如此,这里有一个链接到我的.gitconfig文件,对于想要第一次使用git的xcode用户可能会有用。 - abbood

0

当然你可以将它们合并到主分支。无论你如何组织你的文件,Git 都不会在意。


3
这是一种过于简化的说法:原帖在询问关于两个分支对同一个东西——接口——进行修改,它们有可能引起合并冲突。虽然这些冲突可以被解决,但需要注意。 - Cascabel
4
问题在于,当我解决其他文件中的冲突时,我了解自己在做什么,知道特定行的含义。但在这种情况下,我只能看到一些XML代码,这些代码对我来说毫无意义。如果我在合并时犯了错误,我很难找到并纠正这个错误。再举个例子,如果我在一个分支中有一个带有三个选项卡的选项卡视图,在另一个分支中也有一个带有三个选项卡的选项卡视图,其中两个选项卡相同,而另一个不同,在合并后,我会得到一个四个选项卡的选项卡视图吗? - Ibolit

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