java開發工具(13)最好用SourceTree解決衝突方案


上篇博文,我們講了SourceTree提交代碼的方式,其中涉及到提交的時候,如果有代碼衝突,我們如何解決,在本篇博文,就細細道來,希望通過此篇博文,你能完全掌握SourceTree解決衝突的方法。

一、產生衝突的原因

當同一個文件,A修改了代碼,B也修改了代碼,如果修改的行號有重疊的時候,就會出現代碼衝突。

二、衝突文件標識

在SourceTree的提交界面,有幾種標誌:
SourceTree提交標誌
有修改 代表有修改的內容
刪除 代表刪除的文件
未加入倉庫 代表未加入到倉庫的文件
衝突 代表有衝突的內容

三、SourceTree提供的衝突解決辦法

我們右鍵點擊有衝突的文件,會出現如下圖示:
衝突解決

  • 啓用外部合併工具:我們後面着重講解
  • 使用‘我的版本’解決衝突:使用自己的本地的代碼作爲衝突解決的方案
  • 使用‘他人版本’解決衝突:使用git倉庫中已經提交的代碼作爲衝突解決的方案
  • 重新合併、標記爲已解決、標記爲未解決沒什麼用處,此處可以不用管

四、啓用外部合併工具

在SourceTree的Diff窗口,可以配置外部合併工具,如下圖所示:
SourceTree合併工具
裏面有多種合併工具可供選擇:BeyondCompare、Araxis Merge、Diff Merge、File Merge等,BeyondCompare可能以前用SVN的時候有許多人用過,但關於git的代碼合併,我個人並不習慣用BeyondCompare,我個人比較推薦的是Araxis Merge,這款工具的三個窗口界面比較符合代碼合併的操作習慣。下面我就爲你詳細介紹,如何使用Araxis Merge。

五、Araxis Merge

Araxis Merge是一個可視化的文件比較、合併和同步的軟件。
在此篇文章中,Araxis Merge的詳細使用細節,我就不做過多贅述了,我覺得通過這篇博文介紹,你可以使用Araxis Merge自如的合併衝突就足夠了。

  1. 下載和安裝Araxis Merge
  2. 在上面第四節的圖片中,將可視對比工具和合並工具都選擇爲Araxis Merge
  3. 在衝突文件右鍵“解決衝突”->“啓用外部合併工具”,默認就會彈出Araxis Merge的合併頁面,如下圖:
    合併代碼測試
    可以看到Araxis Merge把代碼分成了三個框,
  • 左邊框:遠程倉庫中的代碼
  • 右邊框:本地倉庫中的代碼
  • 中間:本地倉庫提交之前的代碼

左邊框、右邊框中,與本地提交之前的代碼變動,都會顯示紅色區域塊,你可以一目瞭然到底什麼地方有了改動,你需要知道的是,最後合併後的代碼中間框裏面的代碼。

如果你想把左邊的代碼合併,就點擊一下左邊框中的箭頭,則對應的代碼塊自動添加的中間框中,如果想把右邊框的代碼合併,方法一樣。如果兩邊的代碼你都想在合併後保留,你可以手動複製粘貼到中間框中,只要你明確了一點,中間框中的代碼是合併後的代碼,怎麼操作你就可以自己隨意了。

合併完成後,在SourceTree中會有兩個文件,一個是你合併後的文件,一個是合併前的原始文件有.orig後綴,合併完成後,你可以檢查下合併後的文件是否有問題,如果有問題,可以重新合併,方法如下:

  1. 刪除之前合併後的代碼
  2. 把.orig文件的後綴去掉
  3. 右鍵去掉.orig後綴的文件->解決衝突->標記爲未解決
  4. 重新使用啓用外部合併工具的方式解決衝突。

六、提交或者合併的代碼怎麼回滾

有時候,你可能已經把代碼提交到git倉庫,或者把另一個分支合併到了當前分支,此時發現有問題,想要把代碼回滾,用SourceTree怎麼操作呢?
在此時你需要選中一個當前分支的提交節點:
提交節點
這裏有許多的提交,單當前分支最近的一次提交是藍色的這個,右鍵->分支,以當前節點創建新分支,就可以把代碼回滾到當前節點的上一次提交處,你學會了麼?

七、總結

至此,SourceTree解決衝突的方案,就說完了,如果你還有疑問,可以在下方給我留言。
本篇博文主要說了幾點:

  • 產生衝突的原因:多人開發時,兩個人修改了同一文件的相同行
  • SourceTree提供的解決衝突的辦法:使用我的版本解決衝突,使用他人版本解決衝突,啓用外部文件解決衝突
  • 配置外部合併工具的方式
  • 使用Araxis Merge解決衝突的具體操作步驟:要點是中間框是最後合併後的文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章