svn避免冲突,svn update冲突
内容冲突:当两个(或更多)开发人员修改同一文件中相邻或相同的行时,就会发生文件冲突。树冲突:当一个开发人员移动、重命名或删除一个文件或文件夹,而另一个开发人员也移动、重命名、删除或只是修改它们时,更新时就会发生树冲突。
SVN的基本使用和内容冲突的解决方法可以参考这个博客TortoiseSVN和VisualSVN服务器教程。
树冲突的类型及其解决方案
1.局部删除,外部更改
(外部)修改文件并提交给版本库。b(本地)同时删除了文件。
更新B时发生树冲突,文件被标记为冲突。
b的解决方案是:
放弃(外部)更改:即删除该文件-直接将冲突标记为已解决。放弃B(本地)删除:选择取消,右键TortoiseSVN - SVN恢复,取消删除操作。
2.本地名称更改、外部更改
(外部)修改文件并提交给版本库。b(本地)同时重命名文件。
b更新时,文件被标记为树冲突。
b的解决方案是:
a合并(外部)修改重命名后的文件:直接选择合并修改(见下图)——将冲突标记为已解决,然后提交。放弃更改A:重命名的文件不包含A的更改内容——直接将冲突标记为已解决,然后提交,放弃更改B:选择取消,TortoiseSVN - SVN恢复,取消改名操作。
3.本地更改,外部删除
a(外部)删除文件并提交到版本库;b(本地)文件同时被修改。
b更新时,文件被标记为树冲突。
b的解决方案是:
放弃a(外部)删除:不删除文件,保留本地内容进行修改——直接选择保留本地文件再提交;放弃b(本地)更改:直接选择删除该文件。
4.本地更改、外部名称更改
(外部)重命名文件并提交给版本库;(本地)修改了文件的内容。
更新时,B的这个文件被标记为树冲突。
b的解决方案是:
合并到重命名的文件:选择保留本地文件,手动将更改的内容移植到重命名的文件,取消添加原始文件,然后提交。放弃(外部)改名:选择保留本地文件,然后删除改名后的文件,再提交。放弃B(本地)更改:文件重命名,内容不变——直接选择删除这个文件。
将本地更改合并到重命名的文件中,并按如下方式手动合并它们:
A.依次选择原始文档和重命名的文档,并添加比较。
B.根据两个文件的不同,将原文件的内容更改移植到重命名的文件中,然后保存。
5.本地删除,外部重命名。
a(外部)重命名文件,然后提交给版本库;b(本地)删除文件。
更新时,B的文件会有树冲突。
b的解决方案是:
a接受改名:标志冲突已解决;坚持删除文件:删除重命名的文件,提交。
6.本地名称更改,外部删除
(外部)删除文件,然后提交给版本库;b(本地)重命名文件。
更新时,B的文件会有树冲突。
b的解决方案是:
删除被A接受:标记冲突已解决,然后取消添加重命名的文件;坚持重命名:将冲突标记为已解决,然后提交。
7.本地名称更改和外部名称更改
(外部)重命名文件并提交给版本库;b(本地)重命名同一文档。
更新时,B的文件会有树冲突,
b的解决方案是:
使用a的名称:将冲突标记为已解决,并取消添加本地重命名的文件;使用B的名字:将冲突标记为已解决,删除A的重命名文件,然后提交。
分支合并冲突
对于树枝和树干之间的冲突,很少使用SVN的树枝。这里不一一介绍。有问题可以参考SVN的帮助文档(其实这个博客很多内容都是借用上面的(朝夕))