雖然在團隊協作開發中強調盡量避免操作同一文件,以避免沖突,但是在實際開發中還是會遇到沖突,所以掌握解決沖突的方法必不可少。
1 解決沖突就要先制造沖突,沖突一般是由于兩個人同時修改同一文件而造成的。在GitHub上修改遠程倉庫文件模擬一個人操作,sourceTree本地修改同一文件模擬另一個人操作。
1.png
2 登錄GitHub ,打開GitTest,編輯test1.txt文件
image.png
3 在文件末尾增加 內容 code conclick1,點擊提交。如下圖所示。
image.png
image.png
4 打開本地工作副本的test1.txt文件,新增內容code conclick2,如下圖:
image.png
5 打開sourceTree,可以看到本地工作副本有個待提交記錄。
image.png
6推送代碼。這個時候你修改完了本地的功能,并不知道遠程倉庫上也有人提交了該文件的修改。直接推送本地修改,推送本地工作副本到遠程倉庫,運行完成后會報錯,大概是提示本地倉庫和遠程倉庫版本不一致,無法提交,但是本地工作副本的修改卻是已經提交到了本地倉庫。如下圖。
image.png
image.png
7 既然提示 和遠程倉庫版本不一致,無法推送,那只能先拉成一致了。點擊拉取圖標,等執行完,就會出現下圖所示。有一個待拉取的圖標和一個待推送的圖標,并且test1.txt文件的圖標變成了黃色的感嘆號。這個時候文件的沖突就造成了。
image.png
8 沖突文件會把兩者的修改以沖突的方式合在一個文件里,等待使用者去處理。那么基本的處理思想是:要么使用其中某一個人的,要么使用兩者的組合。
沖突的解決需要一個外部代碼對比工具,我這里使用的是Beyond Compare 4,大家可以自己百度下載安裝,然后集成到sourceTree軟件中。如下圖。在外部對比工具中找到Beyond Compare 4的可執行程序,點擊確定。
image.png
9 下面開始使用代碼對比工具解決沖突,選中待解決沖突的代碼,右鍵 解決沖突,打開外部合并工具。
image.png
10 等待一會,Beyond Compare 4就會被打開。第一塊是本地修改的版本,第二塊是沖突兩者(本地倉庫和遠程倉庫)相同的版本基準,第三塊是 遠程倉庫的修改。第四塊是沖突處理后的代碼。
image.png
11 本次解決沖突是為了合并兩者的修改,所以我會把第一塊和第三塊所做的修改按照正確的邏輯順序,合到第四塊。如下圖,點擊保存。關閉該對比軟件。
image.png
12 切到sourceTree界面,可以看到多了一個解決沖突的中間文件,由于沖突已解決,直接右鍵移除,
image.png
13 可以看到沖突已解決,代碼已正確合并。推送該合并。
image.png
14 這樣沖突就被解決了,可以看到本地工作副本和遠程倉庫的代碼都是一致的了。
image.png
image.png