1. 程式人生 > >SVN提交代碼沖突解決方法總結

SVN提交代碼沖突解決方法總結

命名 報錯 之前 shu 提交 分享 img 直接 dia

在近期svn提交代碼時遇到多種情況的問題,現做一個解決辦法的總結如下:

插播一條:idea下被svn版本控制各類文件的顏色區分
紅棕色,未加入版本控制;
綠色,已經加入控制暫未提交;
藍色,加入,已提交,有改動,與版本庫文件不一致;
黑色,加入,已提交,無改動,和版本庫文件一致;
灰色:版本控制已忽略文件。

1.內容沖突:當兩名(或更多)開發人員修改了同一個文件中相鄰或相同的行時就會發生文件沖突。
(1)修改同一文件不同位置引發的沖突,其他人在你之前提交了代碼
你提交時報錯:該文件已經過期,需要先更新文件
解決辦法:點擊update更新該文件代碼,在此基礎上添加自己更改的部分,再次提交,成功。
(2)修改同一文件相同位置引發的沖突

你提交時報錯:

技術分享圖片

點擊update更新該文件版本,提交,再次報錯:

技術分享圖片

解決辦法:與其他人協商,根據沖突部分代碼邏輯,選擇你的或者別人的代碼。
2.樹沖突:當一名開發人員移動、重命名、刪除一個文件或文件夾,而另一名開發人員也對它們進行了移動、重命名、刪除或者僅僅是修改,在更新時就會發生樹沖突。
(1) 本地刪除,外部更改
A(外部) 修改文件並將其提交至版本庫中
B (本地)同時刪除了文件
B 更新時就會發生樹沖突,該文件被標記為沖突,B 的解決方法有:

  • 放棄 A (外部)更改:也就是刪除這個文件----直接標記沖突為已解決。
  • 放棄 B (本地)刪除:選擇取消,右鍵 TortoiseSVN --> SVN 還原,撤銷刪除操作。

(2)本地改名,外部更改
A(外部) 修改文件,並將其提交至版本庫中。
B (本地)同時將文件改名。
B 更新時, 該文件被標記為樹沖突,B 的解決方法有:

  • 合並 A (外部)更改到改名後的文件中去:直接選合並修改(見下圖)----> 標記沖突為已解決,然後提交。
  • 放棄 A 的更改:改名後的文件不包括 A 的更改內容 ----> 直接標記沖突為已解決,然後提交,
  • 放棄 B 的改名:選擇取消,TortoiseSVN --> SVN 還原,撤銷改名操作。

(3)本地更改,外部刪除
A(外部)刪除了文件,並提交到了版本庫;
B(本地)同時對該文件進行了修改。

B 更新時,該文件被標記為樹沖突,B 的解決方法有:

  • 放棄 A(外部)的刪除:不刪除文件,同時保留本地內容修改---->直接選保留本地文件,然後提交;
  • 放棄 B(本地)的更改:直接選刪除此文件。

(4)本地更改,外部改名
A(外部)將文件改名,並提交到了版本庫;
B(本地)修改了文件內容。
更新時,B 的該文件被標記為樹沖突,B 的解決方法有:

  • 合並更改到改名後的文件:選擇保留本地文件,手動將更改內容移植到改名後的文件,撤銷增加原文件,然後提交。
  • 放棄 A(外部)改名:選擇保留本地文件,然後刪除改名後的文件,然後提交。
  • 放棄 B(本地)更改:文件改名,內容不變-->直接選刪除此文件。

(5)本地刪除,外部改名
A(外部)將文件改名,然後提交到版本庫;
B(本地)將文件刪除。
更新時,B 的該文件將發生樹沖突,B 的解決方法有:

  • 接受 A 的改名:標記沖突已解決;
  • 堅持刪除文件:把改名後的文件刪除,然後提交。

(6)本地改名,外部刪除
A(外部)將文件刪除,然後提交到版本庫;
B(本地)將文件改名。
更新時,B 的該文件將發生樹沖突,B 的解決方法有:

  • 接受 A 的刪除:標記沖突已解決,然後撤銷增加改名後的文件;
  • 堅持改名:標記沖突為已解決,然後提交。

(7)本地改名,外部改名
A(外部)將文件改名,並提交到版本庫;
B(本地)將同文件改名。
更新時,B 的該文件將發生樹沖突,B 的解決方法有:

  • 用 A 的名字:標記沖突為已解決,撤銷增加本地改名後的文件;
  • 用 B 的名字:標記沖突為已解決,刪除 A 改名後的文件,然後提交。

3.總結:對癥下藥,拒絕盲目反復提交
SVN代碼提交減少沖突的方法無非兩種:

    • 避免開發人員同時開發同一文件
    • 開發前需要時常更新本地代碼庫

SVN提交代碼沖突解決方法總結