SVN 更新 提交 解决冲突

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN 更新 提交 解决冲突相关的知识,希望对你有一定的参考价值。


简介
原则:
  • 最重要的:先更新再提交(没有冲突时),也可以先同步再更新后提交(有冲突时)
  • 更新就是将本地代码升级到服务器端版本,更新并不会覆盖或删除我们本地修改的内容;若没有冲突,则相当于,是将我们修改的内容移植到服务器最新版本上了(提交后生效);若有冲突,则必须先解决冲突才能提交。
  • 同步(与资源库同步)是指在一个同步透视图中比较本地和服务端有哪些差异,他会把有差异的文件及文件中的模块标记出来,是在检查冲突及合并版本时使用的;当然解决冲突也不一定必须在更新之前或必须在eclipse中,也可以在更新后在本地右键-svn-编辑冲突中处理。
  • 提交就是本地代码写入服务器中最新的源码库中


使用eclipse解决文件冲突
对于每个冲突的文件 Subversion 在你的目录下放置了三个文件:
  • “.mine”:这是你要提交的文件,在你更新你的工作副本之前存在于你的的工作副本中——也就是说,没有冲突标志。这个文件除了你的最新修改外没有别的东西。
  • “.r(xxx)”:这是在你更新你的工作副本之前的基础版本文件。也就是说,它是在你做最后修改之前所检出的文件。
  • “r(xxx+1)”:这个文件是当你更新你的工作副本时,你的 Subversion 客户端从服务器接收到的。这个文件对应于版本库中的最新版本。

1、二选一形式解决冲突

经过文件对比后,如果我们发现两者改动的是同一个位置或者是同一个功能点,那么我们可能需要选择性地保留一个,舍弃另一个。
  • 如果舍弃的是本地文件,请右键单击该文件,然后在关联菜单中点击【覆盖/更新】(Replace/Update),此时Eclipse将提示"是否删除本地更改,并替换为资源库中的文件",直接点击【Yes】即可舍弃本地更改,并更新为资源库中的最新版本。
  • 如果舍弃的是资源库中的文件,请右键单击该文件,然后在关联菜单中点击【标记为合并】,然后再点击【提交】即可。
 技术分享

2、合并解决复杂的冲突

如果本地和资源库中的文件改动都"各有所需"又"各有所弃",那么我们只能在文件对比中,一处处对比不同之处,并逐步修改为最终版本。

在修改与合并的过程中,有两个图标按钮比较重要。如下图所示的红色边框标注的两个图标,前者可以将右侧与本地文件没有产生冲突的改动复制到左侧的本地文件中,后者用于将鼠标光标当前所在的右侧改动区域复制到左侧相应位置

技术分享

在确认改动完成之后,同样的点击右键关联菜单中的【标记为合并】,然后直接【提交】即可。


使用SVN解决文件冲突
使用TortoiseSVN解决文件冲突 
1、update时发现冲突。update后产生三个文件: 
2、右键找到Edit conflicts(编辑冲突),打开之后,窗口里边有三个文档,左右下。下方的是最后成果,你需要根据左右两份不同版本,合成一个最终版
3、右键-Resolved(或在修改后保存时会有提示“是否标记为解决”,点击确认即可)
4、黄色警告不见了,变回平时熟悉的已修改标记~~现在可以正常commit了


树冲突
定义
  • 文件冲突:当多名开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。
  • 树冲突:当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。
不同的情形需要不同的步骤来解决冲突。





























以上是关于SVN 更新 提交 解决冲突的主要内容,如果未能解决你的问题,请参考以下文章

svn 更新代码冲突 怎么编辑冲突代码 解决

解决SVN提交和更新代码冲突?

svn 提交时总提示一下文件冲突

svn 命令行怎么解决冲突

摘SVN提交与版本冲突

svn 命令行怎么解决冲突