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


在近期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代碼提交減少沖突的方法無非兩種:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM