svn 命令行怎么解决冲突
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn 命令行怎么解决冲突相关的知识,希望对你有一定的参考价值。
解决版本冲突的命令。在冲突解决之后,需要使用svn resolved来告诉subversion冲突解决,这样才能提交更新。冲突发生时,subversion会在Work Copy中保存所有的目标文件版本(上次更新版本、当前获取的版本,即别人提交的版本、自己更新的版本、目标文件。假设文件名是sandwich.txt,对应的文件名分别是:sandwich.txt.r1、sandwich.txt.r2、sandwich.txt.mine、sandwich.txt)。同时在目标文件中标记来自不同用户的更改。
解决冲突的办法:
- 手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行svn resolved filename来解除冲突,最后提交。
- 放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行svn resolved filename并提交。
- 放弃自己的更新,使用svn revert,然后提交。在这种方式下不需要使用svn resolved。
对于svn resolved命令需要非常小心,必须是非常确定冲突已经解决才能使用。否则,会导致Subversion以为冲突解决,而使代码库不正确。 解决冲突详细文档:
http://svnbook.subversion.org.cn/1.2/svn.tour.cycle.html#svn.tour.cycle.resolve 解决冲突(合并别人的修改)
我们可以使用svn status -u来预测冲突,当你运行svn update一些有趣的事情发生了:
$ svn update U INSTALL G README C bar.c
Updated to revision 46.
U和G没必要关心,文件干净的接受了版本库的变化,文件标示为U表明本地没有修改,文件已经根据版本库更新。G标示合并,标示本地已经修改过,与版本库没有重迭的地方,已经合并。
但是C表示冲突,说明服务器上的改动同你的改动冲突了,你需要自己手工去解决。 当冲突发生了,有三件事可以帮助你注意到这种情况和解决问题: ● Subversion打印C标记,并且标记这个文件已冲突。
● 如果Subversion认为这个文件是可合并的,它会置入冲突标记—特殊的横线分开冲突的“两面”—在文件里可视化的描述重叠的部分(Subversion使用svn:mime-type属性来决定一个文件是否可以使用上下文的,以行为基础合并,更多信息可以看“svn:mime-type”一节)。
● 对于每一个冲突的文件,Subversion放置三个额外的未版本化文件到你的工作拷贝:
● filename.mine
● 你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果Subversion认为这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。) ● filename.rOLDREV 参考技术A 1.svn ci -m "update"
svn: Commit failed (details follow):
svn: Aborting commit: 'test.log' remains in conflict
2.使用svn resolved test.log
3.svn ci -m "update"
这个时候应该可以提交了
4.svn rm test.log
删除掉这个文件
5.svn ci -m "update"
再次提交
这个时候服务器上就没有这个文件了。
在其他的服务器终端上如果遇到这个问题的时候重复这个操作。 参考技术B 1.svn ci -m "update"
svn: Commit failed (details follow):
svn: Aborting commit: 'test.log' remains in conflict
2.使用svn resolved test.log
3.svn ci -m "update"
这个时候应该可以提交了
4.svn rm test.log
删除掉这个文件
5.svn ci -m "update"
再次提交
这个时候服务器上就没有这个文件了。
在其他的服务器终端上如果遇到这个问题的时候重复这个操作。
eclipse svn冲突怎么解决
Eclipse SVN更新存在冲突主要多个开发人员同时提交项目代码到同一仓库,造成提交代码失败,解决SVN冲突的方法:检查当前SVN是否同时多人操作,如果多人同时操作时,稍等片刻,让开发人员先后提交代码。
后提交代码的开发人员,首先更新本地库,然后添加自己修改的代码,最后将项目提交SVN,避免冲突。
如果是某个单一的文件冲突,可以手动更新目标文件,然后执行resolved filename来解除冲突,最后提交。
实在无法解决冲突,最后一种方法,放弃自己的更新,使用svn revert(回滚),然后提交,注意:会造成修改的内容丢失,慎用。 参考技术A
右键项目 -> Team -> 与资源库同步
在同步视图中选择Conflicts Mode,以便首先查看解决冲突
双击需要解决的冲突文件,这里为Student.java,右侧主显示区会出现比较视图。左侧为本地程序,右侧为svn上的最新代码
原来字段名为email,本地将其改为emailAddress,线上代码显示有人将原来的email改为了phoneNumber并增加了属性teacher
选中右侧的两行,点击图标拷贝到本地,保存
此时线上的代码都已经拿下来了,可以继续执行下一步。
右键冲突文件,选择“标记为合并”
点击Incoming Mode -> 右键项目 -> 更新(更新线上的其他无冲突的代码)
点击Outgoing Mode -> 右键项目 -> 提交。输入注释确定提交。
以上是关于svn 命令行怎么解决冲突的主要内容,如果未能解决你的问题,请参考以下文章