iOS Git合并分支解冲突


git多人合作开发项目中,经常会遇到需要合并分支。因为可能会对同一个文件进行了修改,git merge --no-ff -m "merge with no-ff" dev,之后解冲突,下面介绍我遇到的iOS合并分支中遇见的解冲突情况,记录下。

通常合并分支后,会造成xcodeproject工程文件打不开。解决方案分为如下六步。
image

  • 选中工程文件->右键显示包内容
    image
  • 双击这个文件,用Xcode打开
    image
  • 打开之后显示这个样纸
    image
  • 使用快捷键 cmd + F(搜索),在弹出的搜索框中输<<< 或者 >>> 或者 ====,其中的任何一个都行,然后敲一下回车(enter键)说明
    <<<<<<< HEAD代表是工程文件冲突的开始
    =====分割线

d0d695000a8e250672dad0b7954d7d18a6cc17a0结束
image
  • 删掉>>>HEAD和===和>>>>>>>d0d695000a8e250672dad0b7954d7d18a6cc17a0,E16D957A1CD616610095F921 /* Resource /和E1F1D2271CD602F5002AC55F / MainViewController.swift */保留一个
    image
  • 重复查找,如果还有冲突的地方,同上,保存 cmd + s。工程文件能顺利打开
    image

    image

    image

如果使用了cocoapods,除了对同一个.h或.m文件修改有冲突之外,还会有podfile文件和podfile.lock文件冲突了。可以利用sourceTree进行解冲突。

  • 现在点击 “Working Copy” 分区。你会看到受合并冲突影响的文件都在左侧有个感叹号。
    image
  • 使用 SourceTree 解决 git 中的合并冲突,使用 “mine” 或 “theirs” 来解决,这是修复 git 中的合并冲突最简单的方式。如果你右击任意有冲突的文件,它会在 “Resolve Conflicts” 下面显示两个选项。
    image
  • “Mine” 表示冲突文件在你当前分支上的内容。“Theirs” 表示冲突文件在传入分支上的内容——尝试合并到当前分支的那个分支。

注意:如果是回滚操作,“Theirs” 表示冲突文件在回滚区块上的内容。
所以,通过选择 “Mine” 或 “Theirs”,你只是指示 git 丢弃其中一个版本,并使用另外那个版本。

  • 如何决定选择哪个版本?下个问题你可能要问,我怎么知道该选择哪个版本——“Mine” 还是 “Theirs”?

    大部分情况下,你应该已经知道怎么做,因为你知道每个分支中提交的内容。那就可以跳过这个部分。但如果不是,也不要担心。选择冲突的文件,然后可以在右侧看到文件的内容。仔细注意这里的模式,你会在每个有合并冲突的文件中看到它。
    image
<<<<<<< HEAD
...content on current branch...
=======
...content on incoming branch...
>>>>>>> change (or the name of whatever your incoming branch is)
  • 你可以把 HEAD 看作当前分支。在上面的例子里,就是 “master” 分支。

    从 <<<<<<< HEAD 到 ======= 那行之间的就是当前分支上的内容。从 ======= 到 >>>>>>> 你的传入分支名之间的就是传入分支上的内容(在上面的例子中就是 “change”)
    image
  • 还要记住在用 SourceTree 读取文件的时候,可以跳过红色标注的行,因为它们已经被删了。绿色标注的那些是新添加的。
    image

    你可能正在处理一个巨大的文件,在多个部分有多个冲突,那么 SourceTree 里面的视图可能不够用。对于这些情况,我推荐下面的两种方法。

  • 还有可能遇到xib和storyboard无法打开的情况,因为可能xcode版本存在差异。弹窗报错:Interface builder was unable to determine the type of xxx.xib
    image
  • 可以想到,应该是合并造成xib文件版本冲突,一种简单的方式可以拿最新的版本直接覆盖出问题的xib文件。但是这种办法简单粗暴,没有深入探究该xib文件问题到底出在哪里。联想到代码发生版本冲突时,头文件或实现文件中,会标记出冲突的代码,那么出问题的xib文件对应的源码中同样也应该存在冲突的代码。带着这样的想法,我打开了该xib文件的源码。选中xib文件->右键->Open As->Source Code,打开xib文件对应的xml文档:可以清楚地看到,冲突的地方已经被标记出来。原因是toolsVersion和systemVersion版本冲突,是最近升级系统和Xcode引起的。去掉working的部分~
    image
  • 重新pod install或pod update,程序能重新运行。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • 这篇教程不是救急方案。如果你在寻找救急方案,我建议你现在就点击浏览器的返回按钮。如果你想详细了解如何使用 Sour...
    张嘉夫阅读 39,085评论 8 53
  • 源代码管理工具的起源 为什么会出现源代码管理工具? 为了解决在软件开发过程中,由源代码引发的各种蛋疼繁琐问题 源代...
    小白文_Vincent阅读 3,145评论 2 8
  • 一、基本概念: 注:对于git的分布式概念及其优点,不重复说明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大厂offer阅读 1,388评论 0 3
  • &开发过程中离不开源代码的管理, 目地:为了解决在软件开发过程中,由源代码引发的各种蛋疼、繁琐的问题。 目前开发使...
    早起的虫儿子被鸟吃阅读 2,397评论 0 16
  • 一 、SourceTree简介 SourceTree 是 Windows 和Mac OS X 下免费的 Git 和...
    BULL_DEBUG阅读 957评论 0 3