我知道我应该在自己的一个分支上工作,但是我们中的一些人在一个项目的同一个分支上.其中一个Dev提交了一个提交,我只是想用SVN的最新版本更新我的本地副本.运行'svn update'我得到这个输出:
Restored 'index.html' U somescript.php Conflict discovered in file.xml'. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options:
有没有选项/方法来覆盖我的本地更改并从subversion获取最新文件并忽略所有冲突?
我查看了Stack上的其他一些帖子,他们都没有回答这个问题.他们说要删除项目并再次结帐,我想这是最好的方式,所以它...但是想要更多的细节,为什么我不能强制更新.谢谢
编辑:
所以我选择了'show all options':
(s)显示所有选项:s
(e) edit - change merged file in an editor (df) diff-full - show all changes made to merged file (r) resolved - accept merged version of file (dc) display-conflict - show all conflicts (ignoring merged version) (mc) mine-conflict - accept my version for all conflicts (same) (tc) theirs-conflict - accept their version for all conflicts (same) (mf) mine-full - accept my version of entire file (even non-conflicts) (tf) theirs-full - accept their version of entire file (same) (p) postpone - mark the conflict to be resolved later (l) launch - launch external tool to resolve conflict (s) show all - show this list
我想我应该选择'tc'?
如果你真的想要一份HEAD(repos的最新版本),你应该这样做
svn revert -R// discard all your changes inside path (recursive) svn update // get latest revision of all files (recursive)
而已.
请注意,自上次"提交"以来,您将丢失所有更改.
编辑:增加了-R
从Isu_guy答案为完整起见,帮助读者找到一个完整的答案
tato的回答绝对正确,请注意他的谨慎.您将失去所有更改.只是澄清语法和一些细微差别
默认情况下,svn revert是非递归的,需要一个工作路径.要进行递归添加"-R".如果您在当前目录中,请使用"./"作为下面的"路径",或使用类似"/ path_to_your_folder"的绝对路径
svn revert -R
svn update是递归的.如果您在目录中,则根本不需要路径
svn update
我这样做:
svn up --accept tf
要么
svn up --accept theirs-full
也就是说,"svn revert -R"然后"svn up"在你的工作副本的根部也可以做到这一点.就我而言,我有几个用于各种项目的WCs,因此我运行一个shell脚本,在我启动计算机时更新所有这些.我不使用接受,而是使用"--accept p"推迟解决,因为它是一个自动化过程,然后我合并任何SVN无法自动合并的冲突(通常,这涉及恢复,但它取决于).
使用svn 1.6.11(由CentOS 6.4提供),Carnix的命令应如下所示
svn up --accept theirs-full
(因为我没有足够的声誉而无法添加评论)