我知道我应该在自己的一个分支上工作,但是我们中的一些人在一个项目的同一个分支上。其中一个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上的其他一些帖子,他们都没有回答这个问题。他们说要删除项目并再次结帐,我想这是最好的方式,所以它...但是想要更多的细节,为什么我不能强制更新。 感谢
编辑:
所以我选择了'显示所有选项':
(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'?
答案 0 :(得分:71)
如果你真的想要一份HEAD(repos的最新版本),那么你应该
svn revert -R <path> // discard all your changes inside path (recursive)
svn update // get latest revision of all files (recursive)
就是这样。
请注意,自上次“提交”以来,您将失去所有更改。
为了完整起见, 编辑添加了来自Isu_guy answer的-R <path>
,并帮助读者找到一个完整的答案
答案 1 :(得分:28)
tato的答案绝对正确,请注意他的谨慎。您将失去所有更改。只是澄清语法和一些细微差别
默认情况下,svn revert是非递归的,需要一个工作路径。要进行递归添加“-R”。如果您在当前目录中,请使用“./”作为下面的“路径”,或使用类似“/ path_to_your_folder”的绝对路径
svn revert -R <path>
svn update是递归的。如果您在目录中,则根本不需要路径
svn update
答案 2 :(得分:26)
我会这样做:
svn up --accept tf
或
svn up --accept theirs-full
那就是说,“svn revert -R”然后“svn up”在你的工作副本的根部也会起作用。就我而言,我有几个用于各种项目的WCs,因此我运行一个shell脚本,在我启动计算机时更新所有这些。我不使用接受,而是使用“--accept p”推迟解决,因为它是一个自动化过程,然后我合并SVN不能自动合并的任何冲突(通常,这涉及恢复,但它取决于)。
答案 3 :(得分:16)
使用svn 1.6.11(由CentOS 6.4提供)Carnix的命令应该看起来像
svn up --accept theirs-full
(因为我没有足够的声誉而无法添加评论)
答案 4 :(得分:2)
回答你的第一个问题。 没有。但您可以通过从项目的根目录运行以下命令来覆盖本地文件:
svn revert -R .
svn update
这可以在我的mac上使用svn 1.7.19和ubuntu使用svn 1.8.8