iOS中xCode的git合并冲突

3
我在项目中有两个分支,一个是 develop,另一个是 master。不小心在将应用程序发布之前没有将 develop 分支合并到 master 分支,导致现在有两个不同版本的应用程序在两个不同的分支上。假设 master 上是 1.5 版本,develop 上是 1.6 版本。现在当我尝试将这两个分支合并时,Git 在三个不同的文件中显示合并冲突:

  • .plist
  • .xcodeproj
  • .xcworkspace

在合并后,当我尝试打开 xCode 项目时,它会失败并显示错误“项目无法加载......”。当我尝试手动打开文件时,它只是在 editText 中打不开。我尝试使用 Sublime 编辑器,但由于有大量代码行,所以我无法找到冲突。


开发人员的内容是否应该取代主分支? - VonC
是的,它应该被替换。 - Najam
3个回答

4

如果你想用dev替换master的内容,你应该:

  • 从master合并到dev,保留dev的内容
  • 然后从dev到master做一个不显著的合并

也就是说:

 git checkout dev
 git merge --ours master
 git checkout master
 git merge dev

我不能进行替换,因为其中包含有标签和其他重要的提交。 - Najam
@Najam 你是指在主分支上吗?它们不会丢失。 - VonC
我从这个链接中获得了更多的理解... http://gitready.com/advanced/2009/02/25/keep-either-file-in-merge-conflicts.html - Najam

1
你可以通过保留任何版本(保留我的或保留他们的)来解决冲突,因为它们保存了Xcode状态,但它们没有你的代码,也不应该被跟踪。但是不要自己解决冲突,只需选择一个版本,项目就应该正常工作。
你遇到这个问题是因为在创建其他文件之前,应该在你的repo中创建.gitignore文件,以避免出现ide使用但没有你的应用程序代码的文件的问题。
为了避免今后出现问题,你可以创建git ignore文件并添加到repo中
但是有一些被跟踪的文件不应该被跟踪。所以执行以下命令:
git rm -r --cached .
git add .
git commit -m "use .gitignore file"

这将从索引中删除所有内容,并再次添加文件,应用gitignore规则。
检查一切是否正常,然后将其 git push 到您的服务器,您就不应该再有保存xcode状态的这些文件的冲突了。

我无法将这些文件添加到gitignore中,因为这些文件包含了我的项目层次结构和其他重要的文件,需要在最终打包中进行编译和捆绑。 - Najam
但这只是保存了一些东西,比如如果你调整了Xcode窗口的大小或隐藏了其中一个面板,这些信息不应该在存储库中,因为它是由Xcode在打开项目时生成的,每个用户都应该有自己的自定义配置。 - jeprubio

1
你可以在远程分支进行更改,然后将其推送到主分支,再尝试合并远程分支和主分支。
使用以下命令:
git merge remote mater:master 或者你可以删除远程分支,然后将你的远程代码推送到主分支。

我无法删除远程分支,因为该分支中有许多标签和其他重要评论。 - Najam

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