iOS Git合并分支解沖突


git多人合作開發(fā)項目中,經常會遇到需要合并分支。因為可能會對同一個文件進行了修改,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文件沖突了??梢岳胹ourceTree進行解沖突。

  • 現(xiàn)在點擊 “Working Copy” 分區(qū)。你會看到受合并沖突影響的文件都在左側有個感嘆號。
    image
  • 使用 SourceTree 解決 git 中的合并沖突,使用 “mine” 或 “theirs” 來解決,這是修復 git 中的合并沖突最簡單的方式。如果你右擊任意有沖突的文件,它會在 “Resolve Conflicts” 下面顯示兩個選項。
    image
  • “Mine” 表示沖突文件在你當前分支上的內容?!癟heirs” 表示沖突文件在傳入分支上的內容——嘗試合并到當前分支的那個分支。

注意:如果是回滾操作,“Theirs” 表示沖突文件在回滾區(qū)塊上的內容。
所以,通過選擇 “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文件問題到底出在哪里。聯(lián)想到代碼發(fā)生版本沖突時,頭文件或實現(xiàn)文件中,會標記出沖突的代碼,那么出問題的xib文件對應的源碼中同樣也應該存在沖突的代碼。帶著這樣的想法,我打開了該xib文件的源碼。選中xib文件->右鍵->Open As->Source Code,打開xib文件對應的xml文檔:可以清楚地看到,沖突的地方已經被標記出來。原因是toolsVersion和systemVersion版本沖突,是最近升級系統(tǒng)和Xcode引起的。去掉working的部分~
    image
  • 重新pod install或pod update,程序能重新運行。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 這篇教程不是救急方案。如果你在尋找救急方案,我建議你現(xiàn)在就點擊瀏覽器的返回按鈕。如果你想詳細了解如何使用 Sour...
    張嘉夫閱讀 39,569評論 8 53
  • 源代碼管理工具的起源 為什么會出現(xiàn)源代碼管理工具? 為了解決在軟件開發(fā)過程中,由源代碼引發(fā)的各種蛋疼繁瑣問題 源代...
    小白文_Vincent閱讀 3,543評論 2 8
  • 一、基本概念: 注:對于git的分布式概念及其優(yōu)點,不重復說明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大廠offer閱讀 1,558評論 0 3
  • &開發(fā)過程中離不開源代碼的管理, 目地:為了解決在軟件開發(fā)過程中,由源代碼引發(fā)的各種蛋疼、繁瑣的問題。 目前開發(fā)使...
    早起的蟲兒子被鳥吃閱讀 2,628評論 0 16
  • 一 、SourceTree簡介 SourceTree 是 Windows 和Mac OS X 下免費的 Git 和...
    BULL_DEBUG閱讀 1,052評論 0 3

友情鏈接更多精彩內容