https://blog.csdn.net/xgf415/article/details/75196714
SVN 沖突包括
- 內容沖突:當兩名(或更多)開發人員修改了同一個文件中相鄰或相同的行時就會發生文件沖突。
- 樹沖突:當一名開發人員移動、重命名、刪除一個文件或文件夾,而另一名開發人員也對它們進行了移動、重命名、刪除或者僅僅是修改,在更新時就會發生樹沖突。
SVN 的基本使用和內容沖突的解決方法可以參考這篇博客 TortoiseSVN 和 VisualSVN Server 使用教程 。
樹沖突類型及解決方法
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(本地)更改:文件改名,內容不變-->直接選刪除此文件。
合並本地更改到改名后的文件中,手動合並如下:
a.先后選擇原文件和改名后的文件,加入對比。
b.根據兩個文件的差異,把原文件的內容更改移植到改名后的文件中,然后保存。
5. 本地刪除,外部改名
- A(外部)將文件改名,然后提交到版本庫;
- B(本地)將文件刪除。
更新時,B 的該文件將發生樹沖突。
B 的解決方法有:
- 接受 A 的改名:標記沖突已解決;
- 堅持刪除文件:把改名后的文件刪除,然后提交。
6. 本地改名,外部刪除
- A(外部)將文件刪除,然后提交到版本庫;
- B(本地)將文件改名。
更新時,B 的該文件將發生樹沖突。
B 的解決方法有:
- 接受 A 的刪除:標記沖突已解決,然后撤銷增加改名后的文件;
- 堅持改名:標記沖突為已解決,然后提交。
7. 本地改名,外部改名
- A(外部)將文件改名,並提交到版本庫;
- B(本地)將同文件改名。
更新時,B 的該文件將發生樹沖突,
B 的解決方法有:
- 用 A 的名字:標記沖突為已解決,撤銷增加本地改名后的文件;
- 用 B 的名字:標記沖突為已解決,刪除 A 改名后的文件,然后提交。
分支合並沖突
對於分支和主干合並時發生的沖突,因為 SVN 的分支用的很少。。。。所有這里也不介紹了。有問題的話可以參考 SVN 的幫助文檔(其實本博客很多內容都是上面借鑒(chaoxi)來的)