2012-02-09 265 views
54

當Git中存在合併衝突時,類似以下的垃圾被插入到衝突文件中。三個問題:合併衝突解決

  1. 你如何閱讀這些註釋?
  2. 解決這些合併衝突時有什麼策略可用?
  3. 是否有一個Mac的GUI工具,知道如何讀取這些文件,並排顯示這兩個版本,以便更容易地解決問題?

enter image description here

注:如果是相關的,我使用GitHub的Mac的GUI客戶端。

+1

可能重複[我該如何解決合併Git中的衝突?(http://stackoverflow.com/questions/161813/how-do-i-fix-merge-conflicts-in-git ) - #1鏈接,如果谷歌「混帳合併衝突」 – 2012-02-09 08:05:28

回答

20

現在有一個比試圖讀取Git插入到文件中的亂碼標記更好的解決方案。 Kaleidoscope 2,Black Pixel的差異工具的第二個版本,現在也是合併工具。這不是免費的,但它運作得非常好。

安裝萬花筒2後,與Git集成非常簡單。打開萬花筒,然後從菜單欄中選擇萬花筒>集成...

Kaleidoscope's Integration menu option.

然後你就會看到這個窗口。只需從左側導航欄中選擇Git,然後安裝ksdiff命令行工具,然後製作Kaleidoscope Git的默認差異和合並工具。

Kaleidoscope's Git Integration dialog.

最後,一旦你在Git的合併衝突,只需進入命令行和執行git mergetool。現在衝突很容易理解。請享用。

Kaleidoscope sane view for merge conflicts.

+2

我想知道如何標記通過萬花筒解決 – 2016-08-05 04:05:40

+1

@FrankFang當你解決所有衝突時,你只需要關閉窗口。你會被問及合併是否可以。 – 2017-02-16 23:15:33

34

一切<<<<<<======之間來自HEAD修訂,這是啓動合併操作之前提交狀態(如果樹是髒git merge會抱怨,所以它應該是等同於你的工作目錄)。

======>>>>>>之間的部分來自正在合併的版本。 >>>>>>之後的文本是引入衝突更改的提交的註釋。

存在衝突標記意味着該部分文件的基本版本與「新」版本不同。基本版本(最後一個共同的祖先)未顯示。

如果你想要一個更舒適的合併和可用的GUI,我建議你看看kdiff3。

+0

謝謝,西蒙。有沒有一些GUI應用程序可以打開這些文件,並顯示HEAD和合並版本? – 2012-02-09 08:12:54

+0

按照上面@Brian建議的鏈接。 – 2012-02-09 08:19:25

+0

您能指出我該鏈接中哪些信息有用嗎?我的git手冊是無法訪問的。 – 2012-02-09 08:39:38

16
<<<< HEAD #Where the conflict starts 

#Previous Revision 

========== # The point where things look iffy 

#Things that changed 

>>>>> New Commit # Point where the conflict ends 

蘋果的Xcode自帶FileMerge它可以在命令行上opendiff訪問。

git mergetool -t opendiff

+2

這是什麼意思,如果沒有什麼改變,但我仍然有衝突? – Ken 2013-02-08 06:51:16

+0

git mergetool -t opendiff是我的答案。謝謝。 – Billy 2015-03-12 16:18:35

4

您可以配置(圖形)合併工具,並使用該工具進行解決衝突。

也有看看git mergetool命令 - 如果你有安裝了預定義的工具之一或已經配置了一些其他的工具,這將打開工具http://schacon.github.com/git/git-mergetool.html

分辨率如果您有興趣的GUI工具,因爲GUI工具將幫助您輕鬆製作分辨率,所以您無需擔心符號的真正含義。只要理解標記爲=====>>>>>的部分是衝突部分。

+1

你能給我一個可以讀取這些文件並解釋如何打開它們的Mac GUI應用程序的例子嗎?我已經嘗試在不同的差異和合並工具中打開這些文件,並且它們只是作爲單個文本文件打開,而不是被解釋爲兩個文件。 (這是衝突標記的全部目的。) – 2012-02-09 08:38:00