1. 程式人生 > >git合併導致專案無法開啟(project.pbxproject)

git合併導致專案無法開啟(project.pbxproject)

最近經歷了一次分之合併導致專案打不開的情況。按照網上的說法,找到了問題的根源project.pbxproject檔案,該檔案位於專案檔案.xcodeproj中,使用右鍵檢視包內容就可以找到。
但是網上說的是這個檔案中會出現conflicts,和平常的conflicts一樣存在有<<<< ===== >>>>這樣的符號,但是我的pbxproject檔案中完全沒有這樣的符號。估摸著是merge的時候git覺得沒啥衝突直接就合在一起了。
有個哥們告訴我直接用xcode自帶的git工具merge,這樣兩個分支不一樣的地方就可視化了。但是pbxproject檔案中兩個分支不一樣的地方還是蠻多的所以手動合併比較容易合錯,並且有的時候這個git合併工具開啟相當的慢,還容易導致xcode crash,因此該方案我並沒有嘗試成功。
然後在stackoverflow上看到有人推薦了一個叫kin的工具,在github上可以搜到。於是嘗試了一下該工具.

  1. 首先兩個分支進行merge
  2. 然後使用kin命令獲取pbxproject中的問題資訊(kin命令一定要在專案檔案中包含xcodeproj檔案的資料夾使用)
  3. 得到類似此圖的訊息
    這裡寫圖片描述
    該資訊中忽略掉前面的錯誤,只看最後一個與眾不同的錯誤,然後開啟pbxproject檔案就可以看到該檔案中9517行前後少了欄位sourceTree,以及相應的},可以參照上下文的寫法新增修改一下。

  4. 儲存之後重新開啟工程,發現工程是可以開啟的(能看到整個目錄結構)。

  5. 我的合併的問題到這基本就解決了,但是如果工程雖然可以開啟,但是編譯無法通過,發現少了檔案,那麼應該就是合併的時候檔案丟失了,這個可能就需要你在執行合併之前先將整個工程檔案copy一份,然後再使用之前的步驟解決pbxproject檔案的問題。能編譯工程以後,發現丟失的就將對應的檔案手動add進來。(當然少了檔案還有一種可能是檔案確實應該被刪除,但是合併的時候沒有將相應的引入標頭檔案的操作去掉。依舊是剛才在解決pbxproject檔案配置的時候並沒有完美的解決好這些檔案引用問題,但是這種問題直接看pbxproject來解決感覺比較噁心)

如果對pbxproject檔案結構感興趣可以參考地址:http://blog.csdn.net/hsf_study/article/details/77865533