Main Content

解决 SVN 源代码管理冲突

检查和解决冲突

如果您和其他用户在不同的沙盒中或在不同的分支上更改了相同的文件,则当您试图提交已修改文件时会显示冲突消息。如有必要,请按照程序 解决冲突 提取冲突标记,比较导致冲突的差异并解决冲突。

要解决冲突,您可以:

  • 使用“比较工具”合并修订版本之间的更改。

  • 决定用一套更改来覆盖另一套更改。

  • 通过编辑文件来进行手动更改。

有关使用“比较工具”来合并更改的详细信息,请参阅 合并文本文件

当您对标记为冲突的文件满意后,就能将冲突标记为已解决并提交文件。

解决冲突

  1. 在当前文件夹浏览器中查找存在冲突的文件。

  2. 检查 SVN 状态栏中是否有带红色警告符号 的文件,该符号指示存在冲突。

  3. 右键点击存在冲突的文件,然后选择源代码管理 > 查看冲突以比较各个版本。

  4. 检查冲突。将打开比较报告,显示文件与冲突文件版本之间的差异。

  5. 使用“比较工具”报告来决定如何解决冲突。

    您可以使用“比较工具”来合并各个修订版本之间的更改,该方法在 合并文本文件 中有说明。

  6. 当您已解决更改并要提交您沙盒中的版本时,在当前文件夹浏览器中,右键点击文件并选择源代码管理 > 标记为冲突已解决

  7. 提交已修改文件。

合并文本文件

比较文本文件时,您可以将来自一个文件的更改内容合并到另一个文件。在解决不同版本文件之间的冲突时,合并更改内容很有用处。

如果您在文本比较报告中看到类似如下的冲突标记:

<<<<<<< .mine
则可按照 提取冲突标记 中介绍的方法在合并前提取冲突标记。

提示

您只能从左到右合并。在源代码管理中与另一个版本进行比较时,右边的文件是在您沙盒中的版本。左边的文件是上一个版本的临时副本或导致冲突的其他版本(例如 filename_theirs)。观察位于比较报告顶部的左边和右边文件的文件路径。将左边(临时副本)文件的差异合并到右边文件以解决冲突。

  1. 在“比较工具”报告中,选择报告中的差异并点击替换内容。选中的差异从左边的文件复制到右边的文件中。

    要撤消内容替换,请点击撤消

    或者,使用内嵌的替换内容撤消图标。

    如果报告顶部的合并文件名称显示修改标志 (filename.m*),则表示该文件包含尚未保存的更改内容。

  2. 点击接受并关闭以保存合并更改并标记冲突已解决。

提取冲突标记

什么是冲突标记?

源代码管理工具可以在您未注册为二进制文件(例如文本文件)的文件中插入冲突标记。您可以使用 MATLAB® 来提取冲突标记并对导致冲突的文件进行比较。以下流程将帮助您决定如何解决冲突。

小心

在源代码管理工具上注册文件,以防文件被插入冲突标记或被损毁。有关详细信息,请参阅使用 SVN 注册二进制文件。如果您的文件已包含冲突标记,使用 MATLAB 工具可以帮助您解决冲突。

冲突标记具有以下形式:

<<<<<<<["mine" file descriptor]
["mine" file content]
=======
["theirs" file content]
<<<<<<<["theirs" file descriptor]

如果您试图打开含有冲突标记的文件,会弹出“发现冲突标记”对话框。请按照提示通过提取冲突标记来修复文件。提取冲突标记后,请按照检查和解决冲突中介绍的方法解决冲突。

要查看冲突标记,在“发现冲突标记”对话框中点击加载文件。请勿尝试加载文件,因为 MATLAB 不能识别冲突标记。而是要点击修复文件来提取冲突标记。

MATLAB 只检查冲突文件中的冲突标记。

提取冲突标记

当您打开冲突文件或选择查看冲突时,MATLAB 会检查文件中的冲突标记并提供提取冲突标记的功能。MATLAB 只检查冲突文件中的冲突标记。

但是,未标记为冲突的部分文件中仍可能含有冲突标记。如果您或其他用户未删除冲突标记就标记为冲突已解决然后将文件提交,则可能发生此种情况。如果您在未标记为有冲突的文件中看到了冲突标记,则您可以提取该冲突标记。

  1. 在当前文件夹浏览器中,右键点击该文件,并选择源代码管理 > 将冲突标记提取到文件

  2. 在“将冲突标记提取到文件”对话框中,保持默认选项不变以复制“我的”文件版本覆盖冲突文件。选中比较所提取的文件复选框。点击提取

  3. 照常使用“比较工具”报告来继续解决冲突。