先來了解下什么是沖突吧。沖突就是代碼 String str="aaaa" 被同時修改,一個要變成String str="bbbb";一個要變成String str="cccc";這就在代碼合并的時候就帶來了沖突。如果代碼合并是從主干rebase到分支,如果出現(xiàn)沖突,都是以主干為準(以保證已有的功能不受到影響),就會出現(xiàn)主干代碼強制覆蓋分支的代碼。出現(xiàn)沖突后有4個文件(以pom.xml文件為例):
因為努力和真誠,有更多的客戶和我們聚集在一起,為了共同目標,創(chuàng)新互聯(lián)在工作上密切配合,從創(chuàng)業(yè)型企業(yè)到如今不斷成長,要感謝客戶對我們的高要求,讓我們敢于面對挑戰(zhàn),才有今天的進步與發(fā)展。從網(wǎng)站到小程序開發(fā),軟件開發(fā),成都app軟件開發(fā)公司,十余年企業(yè)網(wǎng)站建設(shè)服務(wù)經(jīng)驗,為企業(yè)提供網(wǎng)站設(shè)計,網(wǎng)站托管一條龍服務(wù).為企業(yè)提供成都全網(wǎng)營銷推廣,按需開發(fā)網(wǎng)站,原創(chuàng)設(shè)計,十余年品質(zhì),值得您的信賴.1.pom.xml ---------合并后的文件,如果有沖突會有<<<<<<<沖突提示符
2.pom.xml.merge-left.r1298 ---------主干的前一個版本,也就是計算是否有沖突的根文件
3.pom.xml.merge-分支 ---------本地分支的代碼,也就是你要求rebase主干的分支代碼
4.pom.xml.merge-來源.r1313 ---------主干的代碼
有些人認為解決沖突只要看1中的pom.xml中的沖突提示符就夠了。然后對有沖突的地方一一解決就夠了。如下圖:
實際上只是看這個是遠遠不夠的。有這樣的一種情況。String str="aaaa",被同時修改,trunk上已經(jīng)是String str="bbbb";本地分支又被修改為String str="cccc";另外一個變量 String str2 = "aaaa2";trunk上沒有變化,只是本地分支被修改為了String str2="cccc2";這個時候svn會將這個文件視為有沖突,因為str 即想變?yōu)閎bbb又想變?yōu)閏ccc,會計算為沖突。但是str2從沖突的定義上來看不是一個沖突,因為只有一個地方修改。svn在代碼合并的時候,發(fā)現(xiàn)這個文件有沖突會直接用trunk的內(nèi)容覆蓋分支的內(nèi)容,并且將str的地方打上沖突提示符。但是str2的地方就不會打上沖突標識符,因為它不是一個沖突。因此這個文件合并后就是這樣的:
如果只是按照沖突提示符去合并就會出現(xiàn)本地代碼丟失的場景。那么正確的合并沖突解決方法應(yīng)該是什么呢?應(yīng)該是根文件(上面提到的pom.xml.merge-left.r1298),分支文件(pom.xml.merge-分支),trunk文件(pom.xml.merge-來源.r1313)進行三方比較。比較工具我使用的是Beyond Compare 3。如下圖所示:
從上圖可以看出,真正出現(xiàn)沖突的是version1會打上沖突提示符,version是直接被trunk的覆蓋。合并后的文件如下圖:
合并沖突的時候應(yīng)該對這三個文件進行三方比較,具體操作可以使用上面標紅的直接定位。合并的時候一定要清楚那些是需要保留分支的,那些是需要保留主干的。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。