2016-08-02 85 views
11

相當長一段時間以來,我一直深受SourceTree缺乏可用衝突解決方案的困擾。如何將視覺衝突解決方案(P4Merge)整合到SourceTree中

應該有一個將p4Merge或其他diff/merge工具集成到SourceTree的過程。目前,p4Merge是我的首選工具;現在我只需要弄清楚如何

  1. 獲取SourceTree接受p4Merge其合併/差異的工具,並
  2. 能夠真正從SourceTree調用p4Merge解決衝突。

到目前爲止,我成功做的唯一事情就是讓P4Merge在SourceTree中顯示差異。因此,Actions/External Diff菜單項可以工作,但操作/解決衝突/啓動外部合併工具菜單項不會(顯示爲灰色)。

enter image description here

我選擇P4Merge兩者的diff工具,並在工具/選項/ DIFF在SourceTree標籤合併工具。我不能在兩個命令行框中放置任何東西(即使我知道該放什麼東西),因爲它們也是灰顯的。

picture of Options/Diff dialog

如何使這項工作?

SourceTree版本爲1.9.5.0,這應該是本文的最新版本。 P4Merge似乎沒有幫助/關於對話框,但它最近安裝了(在最近3個月內)。

+0

...除了原來的問題。這包括諸如「在推送之前拉動」和「在SourceTree中點擊以獲得」解決衝突「菜單項以啓用的情況。 –

回答

4

我有SourceTree版本1.5.2.0,我配置了外部合併工具,如截圖所示。 P4Merge安裝在C:\ Program Files \ Perforce中,不在Path上。我沒有在.gitconfig中設置任何關於差異/合併工具的具體數值(我意識到這是'我的機器答案',但事實確實如此簡單)。

here is how I configured external merge tool

至於工作流程,不同的團隊可能有不同的方法。我們做我們的團隊每個功能的工作(通常只有一個開發商做)什麼是以下(截圖如何SourceTree執行每個操作都在帖子的末尾):

  1. 再次基於開發分支
  2. 在功能創建新的特性分支
  3. 工作,使提交(通常是多個)
  4. 如果有許多變化發展,因爲時間分支做,我們可以合併發展,以我們的特性分支,以解決任何潛在的衝突並確保功能仍然有效
  5. 合併開發分支,然後按下Push - 我們的CI被配置爲觸發部署到測試環境,當新的更改被推動開發分支
  6. 如果一切正常,我們將開發分支合併到主分支,這將觸發部署到生產環境

要重訂發展: enter image description here

要營造新分支的發展: enter image description here

要合併發展成爲功能分支:

enter image description here

這裏是SourceTree如何顯示,有合併後的衝突: enter image description here

更新:爲了驗證是否SourceTree配置正確,我建議你做到以下幾點:

  1. 從本地下載並解壓縮一個小型存儲庫,其中有兩個分支https://1drv.ms/u/s!Ahrx2cBEbNLOy1xsUNuZJrUe80Ox
  2. 通過執行以下命令將此存儲庫添加到SourceTree:文件 - 克隆/新建 - 添加工作副本 - [選擇文件夾'git-config']
  3. 右鍵單擊名稱爲「origin/version-2」的分支並選擇「合併」
  4. 您應該看到警告有關合並衝突,然後後右鍵單擊file.txt的,下面應該出現:

enter image description here

+0

這些設置不起作用。」啓動外部合併工具「菜單選項仍爲灰色 –

+0

看到你的編輯看起來我必須成爲Git的專家 –

+0

對不起,提前一個愚蠢的問題:你確實在合併後的當前分支有衝突,是嗎?當你點擊屏幕上的「工作副本更改」部分中的衝突文件時,顯示上下文菜單的屏幕截圖嗎? – oldbam

4

我想你不有問題P4Merge。你的問題是

操作/解決衝突/啓動外部合併工具菜單項不(它是灰色的)

我覺得sourceTree有這樣的行爲,因爲你不有在衝突當前分支。

您可能會檢查這個簡單: 運行命令git mergetool master。 -d並查看輸出。我想輸出將是沒有文件需要合併

如果在當前分支sourceTree未解決的衝突操作/爲我解啓用衝突enter image description here

請編輯問題,如果你有P4Merge,並與其他合併工具sourceTree真正porblem工作正常。

+0

我的主要假設之一是我不必下降到命令行來做到這一點。畢竟,這是使用SourceTree的關鍵。 –

+0

是的。命令'git mergetool master。 -d'只是一個測試。運行一次並查看輸出。如果輸出是'沒有文件需要合併',這意味着SourceTree的工作是正確的。你沒有解決衝突。 – DmitryZyr