标签:conflict tar 3.1 需要 svn 别人 一个 修改 bottom
大多数时候我们用TortoiseSVN作为客户端,其实SVN提供了强大的客户端命令行工具,和Git差不不多。
$ svn status ? scratch.c A stuff/loot A stuff/loot/new.c D stuff/old.c M bar.c $
?表示没有加入版本控制,A,D,M分别表示增加,删除,修改。
svn status 支持选项 --verbose (-v), 带上该选项后, 命令会输出当前目录中每一项的 状态, 即使是未被修改的项目:
$ svn status -v M 44 23 sally README 44 30 sally INSTALL M 44 20 harry bar.c 44 18 ira stuff 44 35 harry stuff/trout.c D 44 19 ira stuff/fish.c 44 21 sally stuff/things A 0 ? ? stuff/things/bloo.h 44 36 harry stuff/things/gloo.c
可以给 svn status 带上选项 --show-updates (-u), 这样 Subversion 就会和仓库通信, 输出工作副本中已过时的项目:
$ svn status -u -v M * 44 23 sally README M 44 20 harry bar.c * 44 35 harry stuff/trout.c D 44 19 ira stuff/fish.c A 0 ? ? stuff/things/bloo.h Status against revision: 46
Status against revision: 46*表示远程仓库的文件已经发生修改,如果合并会可能发生冲突。
$ svn revert 2.txt 已恢复“2.txt”
svn revert 提供了一个很好的补救机会, 否则的话, 用户就得花费大量的时间, 自己一点一点地手工撤消修改, 又或 者采用一个更麻烦的做法, 直接删除工作副本, 然后重新从服务器上检出一个 干净的工作副本.
首先看一下发生冲突后的文件内容:
$ cat sandwich.txt Top piece of bread Mayonnaise Lettuce Tomato Provolone <<<<<<< .mine Salami Mortadella Prosciutto ======= Sauerkraut Grilled Chicken >>>>>>> .r2 Creole Mustard Bottom piece of bread
分别由小于号, 等号和大于号组成的行是冲突标记, 它们不是冲突数据 的一部分, 用户通常只需要确保在提交前把它们都删除掉即可. 前两个标记之 间的文本是用户的本地修改.
<<<<<<< .mine Salami Mortadella Prosciutto =======
后两个标记之间的内容是别人提交的修改:
======= Sauerkraut Grilled Chicken >>>>>>> .r2
这里去掉别人提交的内容
Top piece of bread Mayonnaise Lettuce Tomato Provolone Salami Mortadella Prosciutto Creole Mustard Bottom piece of bread
使用命令 svn resolve 移除文件的冲突状态后, 接下来就可以提交修改了:
$ svn resolve --accept working sandwich.txt Resolved conflicted state of ‘sandwich.txt‘ $ svn commit -m "Go ahead and use my sandwich, discarding Sally‘s edits."
--accept=working 告诉 Subversion 把文件的当前内容作为冲突解决后的状态,svn resolve 会删除目录下的三个临时文件, 将用户指定的 文件版本作为冲突解决后的最终版。
svn resolve --accept theirs-full CONFLICTED-PATH
$ svn revert filename
标签:conflict tar 3.1 需要 svn 别人 一个 修改 bottom
原文地址:https://www.cnblogs.com/zydev/p/9025979.html