一、什麼狀況下會發生衝突java
<1>兩個開發人員,Harry和Sally,分別從服務器端下載了文件A。服務器
<2>Harry修改以後,A變成了A’,Sally修改以後,A變成了A’’。人工智能
<3>Harry先一步提交,使服務器端文件的版本也變成了A’spa
<4>Sally本地的文件A’’已通過時了,此時她已沒法提交文件,服務器會要求她先進行一次更新操做。code
<5>此時Sally的更新操做有兩種可能blog
(1)Sally所作的修改與Harry不是同一個位置,更新操做嘗試合併文件成功。ip
(2)Sally所作的修改與Harry剛好是同一個位置,更新操做嘗試合併文件失敗,發生衝突。開發
<6>發生衝突後,本地工做副本會發生以下變化it
(1)文件A中的內容發生以下改變class
public static void main(String[] args) { System.out.println("Edit By Command!"); System.out.println("Edit By Command!"); <<<<<<< .mine System.out.println("Edit By Eclipse!"); ======= System.out.println("Edit By Command!New Edit"); >>>>>>> .r14 System.out.println("Edit By Command!"); System.out.println("Edit By Command!"); }
其中,從<<<<<<< .mine到=======之間是發生衝突時本地副本的內容。從=======到>>>>>>> .r14是發生衝突時服務器端的最新內容。注意這裏r後面的數字是發生衝突時服務器端的版本號,有多是任何整數值,r14只是一個例子。
同時文件圖標變成一個「黃色的!」。
(2)與衝突文件同目錄下新增文件,擴展名爲.mine,其內容是發生衝突時本地副本的文件內容。
(3)與衝突文件同目錄下新增文件,擴展名爲.r小版本號,例如MyCRM.java.r13,其內容是衝突發生以前,服務器端的文件內容,能夠做爲解決衝突的參照。
(4)與衝突文件同目錄下新增文件,擴展名爲.r大版本號,例如MyCRM.java.r14,其內容是衝突發生時,服務器端的文件內容。
②解決衝突
(1)在衝突文件上點右鍵→Team→編輯衝突...→出現以下界面
以對比的方式將本地內容與衝突內容顯示出來,其中左側爲本地內容,右側爲衝突內容。其中本地內容是能夠修改的。
(2)根據須要和實際狀況將本地內容更正——這個過程極可能須要牽涉衝突的兩位開發人員進行必要的溝通——機器與程序目前還不能徹底取代人工智能。更正後文件圖標會變成一個「四角形」,同時衝突文件內的<<<<<<< .mine、=======以及>>>>>>> .r14等標記都會被去掉。
(3)在衝突文件上點右鍵→Team→標記爲解決
此時.mine文件和.r版本號文件都會被自動刪除,衝突文件的圖標變爲「*」,表示能夠提交。
(4)提交文件,文件圖標變爲「金色圓柱體」。