当我svn update
和SVN问我一些差异时,我告诉它推迟它们。
现在我想解决它们,但svn update
只是告诉我“最新”,即使svn diff
向我展示了差异。
如何让svn update
再次向我询问冲突?
答案 0 :(得分:17)
svn update
不会再次询问冲突,因为它已经处理过这些冲突。
至于svn status
的含义,?
文件不是由SVN管理的,M
文件已被修改,而C
文件是冲突的你推迟了。如果您打开其中一个C
文件,并查看它,您会在代码中看到标记,显示冲突的位置。您需要编辑其中的每一个,修复冲突并删除标记。然后你需要运行svn resolve
告诉SVN事情没问题。在运行之前,请务必使用--help
选项和Google了解svn resolve
的工作原理。
如果您没有完成所有这些操作,svn commit
将不再有效。
svn status
非常重要,因为svn diff只显示svn update
之后本地发生的事情。但是,svn status -u
在查询存储库后给出了概述。最重要的是,它清楚地识别出有冲突的文件(第1列中为C
),您必须在编辑器中打开并手动检查。
答案 1 :(得分:7)
运行svn commit
时,您将看到冲突文件的列表。
然后,您可以通过发出以下命令来解决冲突:
svn resolve --accept=theirs-full '/path/to/the/file'
键入svn resolve --help
以获取可用冲突解决方案模式的列表。
答案 2 :(得分:0)
推迟后,你必须为冲突中的每个文件运行svn resolve。
如果您想查看冲突,可以运行:
svn resolve /path/to/file
选择“m”进行融合
对于每个冲突,您都会看到两个版本。 您可以选择使用您的版本,他们的版本,混合版本(您的版本,他们的版本),或者编辑其中一个或两个版本。
例如:
Conflicting section found during merge:
(1) their version (à la ligne 88) |(2) your version (à la ligne 77)
-------------------------------------+----------------------------------
text = new_box(name, column, option) | text = new_box(name, column)
-------------------------------------+----------------------------------
Select: (1) use their version, (2) use your version,
(12) their version first, then yours,
(21) your version first, then theirs,
(e1) edit their version and use the result,
(e2) edit your version and use the result,
(eb) edit both versions and use the result,
(p) postpone this conflicting section leaving conflict markers,
(a) abort file merge and return to main menu: 2
然后你选择“r”标记解决的冲突。