从SVN更新时是否可以始终(强制)覆盖本地更改? 忽略冲突?
我知道我应该在我自己的一个分支上工作,但是我们中的一些人在一个项目的同一个分支上。 其中一个开发者做了一个提交,我只是想用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:
是否有一个选项/方式来覆盖我的本地更改,并从颠覆获得最新的文件(S),并忽略所有的冲突?
我已经看了一些Stack上的其他post,他们都没有回答这个问题。 他们说要删除项目和结账再次,我猜如果这是最好的办法,那么…但要更多的细节,为什么我不能强制更新。 谢谢
编辑:
所以我select了“显示所有选项”:
(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
我想我应该select'tc'?
如果你真的想要一份HEAD(回购的最新版本),那么你应该
svn revert -R <path> // discard all your changes inside path (recursive) svn update // get latest revision of all files (recursive)
而已。
请注意,自上次“提交”以来,您将失去所有更改。
编辑:为了完整性,从Isu_guy答案中添加了-R <path>
,并帮助读者find一个完整的答案
tato的回答是绝对正确的,请注意他的谨慎。 你将失去所有的改变。 只是澄清语法和一些细微之处
svn恢复默认情况下是非recursion的,需要一个工作path。 为了使recursion添加“-R”。 如果您位于当前目录中,请使用“./”作为下面的“path”,或使用绝对path,如“/ path_to_your_folder”
svn revert -R <path>
svn更新是recursion的。 如果您在目录中,则根本不需要path
svn update
对不起,我意识到这是一个相当老的post,而不是两个操作,我会这样做:
svn up --accept tf
这就是说,“svn revert -R”,然后“svn up”在你的工作副本的根也将做的伎俩。 在我的情况下,我有几个WCs的各种项目,所以我运行一个shell脚本,当我启动我的电脑更新所有这些。 我不使用accept,而是使用“–accept p”来推迟parsing,因为这是一个自动化的过程,然后我合并SVN无法自动合并的任何冲突(通常,这涉及恢复,但这取决于)。
使用svn 1.6.11(由CentOS 6.4发货)Carnix的命令应该是这样的
svn up --accept theirs-full
(因为我没有足够的声望,所以不能添加评论)
回答你的第一个问题。 没有 。 但是,您可以通过从项目的根目录运行以下命令来覆盖本地文件:
svn revert -R . svn update
这工作在我的Mac与svn 1.7.19和Ubuntu与svn 1.8.8