今天工作中svn up工作目录的时候,发现有冲突的文件都自动执行跳过操作了,并且没有选项可以让我选择(如下图)
记得以前有冲突的时候让我选择操作我有主动选择mark resolved,然后svn现在就自动帮我跳过了冲突处理,不过问题还是存在的。
解决办法:
在有冲突的目录下执行 svn resolve (解决工作副本文件或目录的冲突)查看冲突信息
情况一:local file unversioned, incoming file add upon update
目录下出现了Tree conflict,
提示:local file unversioned, incoming file add upon update(本地文件没有版本控制,传入文件在更新时添加)
就是说我本地的文件和服务器上的文件有冲突,而且我本地的文件没有commit,所以现在问我怎么处理
选择:(r)标记已解决,(p) 推迟处理,(q)退出解决,(h) 帮助
执行 r 的话就是表示冲突已经修改好了,这时svn不会覆盖你本地的文件;
执行 p 的话就是表示暂时不处理;
执行 q 就是退出解决,感觉和推迟处理差不多,就是暂时先不处理吧。
如果是需要服务器上的文件覆盖本地的文件,一般先执行 p 推迟处理,然后执行
svn revert dir(有冲突的文件目录) ——把本地文件恢复到服务器的版本
再执行svn up进行更新
情况二:local file delete, incoming file edit upon update
提示:Tree conflict > local file delete, incoming file edit upon update (本地文件已删除,传入文件在更新时进行编辑)
这时有五个操作选项,执行 h 查看具体操作说明:
(mc) - 保留受此删除影响的任何本地移动 [保留我的冲突]
(r) - 标记已解决,任何受影响的举动都将成为副本
(p) - 推迟解决该冲突 [推迟处理]
(q) - 推迟所有剩余的冲突
因为我没有看到有可以覆盖本地文件的选项,所有这里我的处理方法和情况一一样。
(注:如果不需要保留自己本地目录的情况下,情况一和情况二还有另一种解决办法,就是把有冲突的目录删除再svn up即可)
情况三:
这个报错就好解决了,因为选项中已经有多种操作
(p) 推迟处理,(df) 显示差异, (e) 编辑文件, (m) 合并
(mc) 保留本地的冲突文件, (tc) 保留服务器中的冲突文件
(s) 显示所有选项
因为我更新的都是别人负责的代码,所有这里我执行了(tc) 保留服务器中的冲突文件
最后全部冲突解决
(如果本文中的内容有错误的地方,希望看到的大佬能够指出来,感谢!)