SVN冲突以及解决办法

1.冲突原因:

假设 A、B 两个用户都在版本号为 100 的时候,更新了 kingtuns.txt 这个文件,A 用户在修改完成之后提交 kingtuns.txt 到服务器, 这个时候提交成功,这个时候 kingtuns.txt 文件的版本号已经变成 101 了。

同时B用户在版本号为 100 的 kingtuns.txt 文件上作修改, 修改完成之后提交到服务器时,由于不是在当前最新的 101 版本上作的修改,所以导致提交失败。

2.svn中 更新,提交,与资源库同步分别会有什么效果

1)提交:是用本地文件覆盖服务器的文件,只有提交会导致服务器上发生变化
2)更新:只是把服务器上最新版本下载到客户端,规则如下:
      (1)如果你本地的某个文件没有修改过,而服务器上的这个文件别人已经提交过新版本,那么会用服务器上最新的文件覆盖你本地的文件;
      (2)如果你本地的某个文件你修改过了还没有提交,服务器端的这个文件还没被别人改过,那么对你本地的这个文件没有任何影响;
      (3)如果你本地的某个文件你修改过了还没有提交,服务器端的这个文件已经被别人改过,那么会提示你发生冲突,会将服务器上最新版文件、你新修改的文件、发生分歧前的那个版本的文件都存放到你的本地
3)资源库同步:就是看你本地和服务器的版本之间差异的。你直接用更新,有时会出现冲突,会干掉自己的代码。资源库同步的目的就是让你知道那个文件有冲突,然后有选择的操作。

 3冲突的解决:

  1. 右键项目 -> Team -> 与资源库同步

             

            2.在同步视图中选择Conflicts Mode,以便首先查看解决冲突

            
           3.双击需要解决的冲突文件,这里为Student.java,右侧主显示区会出现比较视图。左侧为本地程序,右侧为svn上的最新代码
            
            原来字段名为email,本地将其改为emailAddress,线上代码显示有人将原来的email改为了phoneNumber并增加了属性teacher
            4.选中右侧的两行,点击图标拷贝到本地,保存
             
            此时线上的代码都已经拿下来了,可以继续执行下一步。
            5.右键冲突文件,选择“标记为合并”
           
           6.点击Incoming Mode -> 右键项目 -> 更新(更新线上的其他无冲突的代码)
           
           7.点击Outgoing Mode -> 右键项目 -> 提交。输入注释确定提交。
            经验:在提交前最好将视图中列出的(所有修改过的)文件双击查看审核一边,确保没有错误或者临时的代码。这一步常常会检查出问题。
           

 

posted @ 2018-05-31 17:14  IT刑天  阅读(1490)  评论(0编辑  收藏  举报