从SVN更新时,是否可以始终(强制)覆盖本地更改?忽略冲突?

时间:2010-09-14 13:14:46

标签: svn command-line conflict

我知道我应该在自己的一个分支上工作,但是我们中的一些人在一个项目的同一个分支上。其中一个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'?

5 个答案:

答案 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