溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

你真的會解決代碼合并沖突么?

發布時間:2020-05-10 06:52:38 來源:網絡 閱讀:2526 作者:zcmer 欄目:軟件技術

   先來了解下什么是沖突吧。沖突就是代碼 String str="aaaa" 被同時修改,一個要變成String str="bbbb";一個要變成String str="cccc";這就在代碼合并的時候就帶來了沖突。如果代碼合并是從主干rebase到分支,如果出現沖突,都是以主干為準(以保證已有的功能不受到影響),就會出現主干代碼強制覆蓋分支的代碼。出現沖突后有4個文件(以pom.xml文件為例):

   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上已經是String str="bbbb";本地分支又被修改為String str="cccc";另外一個變量 String str2 = "aaaa2";trunk上沒有變化,只是本地分支被修改為了String str2="cccc2";這個時候svn會將這個文件視為有沖突,因為str 即想變為bbbb又想變為cccc,會計算為沖突。但是str2從沖突的定義上來看不是一個沖突,因為只有一個地方修改。svn在代碼合并的時候,發現這個文件有沖突會直接用trunk的內容覆蓋分支的內容,并且將str的地方打上沖突提示符。但是str2的地方就不會打上沖突標識符,因為它不是一個沖突。因此這個文件合并后就是這樣的:

   你真的會解決代碼合并沖突么?

   如果只是按照沖突提示符去合并就會出現本地代碼丟失的場景。那么正確的合并沖突解決方法應該是什么呢?應該是根文件(上面提到的pom.xml.merge-left.r1298),分支文件(pom.xml.merge-分支),trunk文件(pom.xml.merge-來源.r1313)進行三方比較。比較工具我使用的是Beyond Compare 3。如下圖所示:

   你真的會解決代碼合并沖突么?


你真的會解決代碼合并沖突么?

   從上圖可以看出,真正出現沖突的是version1會打上沖突提示符,version是直接被trunk的覆蓋。合并后的文件如下圖:

   你真的會解決代碼合并沖突么?

   合并沖突的時候應該對這三個文件進行三方比較,具體操作可以使用上面標紅的直接定位。合并的時候一定要清楚那些是需要保留分支的,那些是需要保留主干的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女