解决两个文件之间的冲突

使用 Team Foundation 版本控制管理文件的优点之一是使多个人员可以同时处理同一资产(如源代码文件)。 不过,允许同时处理同一文件意味着有时您不得不解决一些冲突。

当您尝试执行以下任意操作时,可能会发生冲突:

  • 获取或嵌入文件时,工作区中的版本与服务器上的版本之间可能发生冲突。

  • 从一个分支合并到另一个分支时,源分支中的文件版本与目标分支中的文件版本之间可能发生冲突。

  • 使用 tf rollback 命令执行回滚操作时,文件的当前版本与尝试创建的版本之间可能发生冲突。

尽管在尝试执行操作时遇到冲突会令人沮丧,不过 Team Foundation 版本控制提供了一些信息来帮助您了解冲突原因,并提供了一些工具用以解决这些冲突。 在许多情况下,可以使用自动操作(例如“全部自动解析”或“自动合并”)快速解析一个或多个冲突。

本文内容

  • 管理显示的冲突

  • 获取有关冲突的更多信息

  • 解决冲突

所需权限

若要执行这些过程,您必须将源路径中项的**“读取”权限和目标路径中项的“签出”权限都设置为“允许”。 若要重命名目标路径中的项,您必须将源路径和目标路径的“签出”权限都设置为“允许”。 如果涉及锁定,则您必须将“锁定”权限设置为“允许”**。 有关更多信息,请参见 Team Foundation Server 权限

管理显示的冲突

当您尝试执行的操作被一个或多个冲突阻止时,会自动显示**“挂起的更改”窗口的“冲突”通道。 默认情况下,该窗口仅显示由最近尝试的操作引起的冲突。 当该窗口处于此状态时,会显示一条消息,消息开头为:“已应用路径筛选器...”**

不过,通过执行以下步骤,可使该窗口显示阻止工作区中所有挂起更改的全部冲突:

在工作区中显示所有冲突

  1. 如果**“挂起的更改”窗口尚未显示,请在“视图”菜单上指向“其他窗口”,然后单击“挂起的更改”**。

  2. 单击 ms181433.VCtrl_PendChgsConflictsButton(zh-cn,VS.100).png“冲突”

  3. 单击**“获取所有冲突”**。

    单击此按钮后,将显示一条消息,消息开头为:“总共 n 个冲突...”

如果在对工作区中的文件进行更改后已经过去很长时间,则在该时间内可能会发生新的冲突。 通过执行以下步骤,可以刷新“挂起的更改”窗口来显示这些冲突:

刷新“挂起的更改”窗口

  1. 如果**“挂起的更改”窗口尚未显示,请在“视图”菜单上指向“其他窗口”,然后单击“挂起的更改”**。

  2. 单击 ms181433.VCtrl_PendChgsConflictsButton(zh-cn,VS.100).png“冲突”

  3. 单击**“刷新”**。

获取有关冲突的更多信息

在尝试解决冲突之前,可能需要获取有关引起该冲突的文件更改的信息。

获取有关冲突的更多信息

  1. 显示**“挂起的更改”窗口的“冲突”**通道(更多信息,请参见管理显示的冲突。)

  2. 找到并选择要调查的冲突

  3. 阅读显示在所选冲突中的信息。 对于某些类型的冲突,会显示一些链接,单击链接可获取更多信息。

  4. (可选)执行以下步骤之一:

    • 单击 “历史记录”按钮“历史记录”查看文件的历史记录。 如果引起冲突的操作是合并或回滚,则可以单击“历史记录”右侧的菜单控件,然后选择“源历史记录”“目标历史记录”

    • 单击 “批注”按钮**“批注”**查看有关对文件最新版本所做全部更改的详细信息,包括做出每项更改的人员及做出该更改的时间。

    • 单击 “比较文件”按钮**“比较”**右侧的菜单控件,然后选择一个命令。

      如果要尝试…

      请选择…

      以便…

      签入或获取文件

      将本地项与服务器项进行比较

      将工作区中的副本与服务器上的最新版本进行比较。

      将本地项与原始项进行比较

      将工作区中的副本与服务器上签出给您的版本进行比较。

      将服务器项与原始项进行比较

      将服务器上的最新版本与签出给您的版本进行比较。

      合并文件

      将源项与目标项进行比较

      将合并源中的版本与合并目标中的版本进行比较。

      将源项与基项进行比较

      将合并源中的版本与上次在源和目标之间执行合并后的版本进行比较。

      将目标项与基项进行比较

      将合并目标中的版本与上次在源和目标之间执行合并后的版本进行比较。

      回滚文件

      将源项与目标项进行比较

      将紧邻待去除文件版本(源项)之前的版本与工作区中已回滚的文件版本(目标项)进行比较。

      将源项与基项进行比较

      将紧邻待去除文件版本(源项)之前的版本与包含待去除更改的文件版本(基项)进行比较。

      将目标项与基项进行比较

      将工作区中已回滚的文件版本(目标项)与包含待去除更改的文件版本(基项)进行比较。

解决冲突

Team Foundation 版本控制 提供了几种工具,可用于解决阻止您尝试执行操作的冲突。

选择解决冲突的方法

  • 查看下表,然后单击要使用的方法。

    解决方法

    说明

    自动解决所有冲突

    系统会尝试解决所有冲突。 您可以选择排除系统所用的一些试探方法。

    自动合并单个冲突

    系统会尝试解决一个冲突。 您不能选择排除系统所用的任何试探方法。

    手动解决单个冲突

    您手动选择一项措施来解决冲突。

自动解决所有冲突

  1. 显示**“挂起的更改”窗口的“冲突”**通道(更多信息,请参见管理显示的冲突。)

  2. 单击**“全部自动解析”**,然后选择以下选项之一:

    • 如果您希望系统尝试使用其试探方法自动解决冲突,请选择**“所有冲突类型”**。

    • 如果您希望系统尝试解决冲突,但又希望排除某些试探方法,请选择**“特定冲突类型”**。

      随即显示**“选择要解决的冲突”对话框。 选中或清除要启用或禁用的试探方法,然后单击“自动合并”**。 有关更多信息,请参见指定自动解析冲突解决选项

  3. 系统会尝试自动解决在“挂起的更改”窗口中显示的冲突。 系统无法解决的所有冲突将继续保留在该窗口中,这些冲突必须手动解决。

自动合并单个冲突

  1. 显示**“挂起的更改”窗口的“冲突”**通道(更多信息,请参见管理显示的冲突。)

  2. 找到并选择要解决的冲突。

    提示

    可以按住 Shift 或 Ctrl 键,然后选择多个冲突。

  3. 单击**“自动合并”**。

提示

如果“自动合并”处于禁用状态,则表示必须手动解决此冲突。

手动解决单个冲突

  1. 显示**“挂起的更改”窗口的“冲突”**通道(更多信息,请参见管理显示的冲突。)

  2. 找到并选择要解决的冲突。

    提示

    可以按住 Shift 或 Ctrl 键,然后选择多个冲突。

    在所选冲突中,系统会显示可用于解决相应冲突的措施。 所显示的措施具体取决于冲突类型以及引起冲突的操作。

  3. 选择一项措施以解决冲突。

请参见

任务

协调两个文件夹之间的差异

合并文件夹和文件

获取团队项目的源代码

合并文件夹和文件

获取团队项目的源代码

参考

Resolve 命令

概念

提交更改

挂起的更改

其他资源

解决文件夹区别和文件冲突