解决 Team Foundation 版本控制冲突

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

使用 Team Foundation 版本控制 (TFVC) 管理文件的优点是多个人员可以同时处理一个文件。 一个缺陷就是你有时必须在获取、签入、取消搁置、合并或回滚文件前解决冲突。

尽管遇到冲突会令人沮丧,但系统提供了帮助您了解和解决冲突的信息和工具。

还可以使用 Resolve 命令从命令行解决冲突。

提示

如果团队需要协作解决大量冲突(例如,在大型代码库中执行合并操作后),共享开发计算机上的公共工作区可能会有所帮助。 有关详细信息,请参阅创建和使用工作区

解决冲突

可以使用 Visual Studio“解决冲突”窗口来解决阻碍你的冲突。 若要打开该窗口,请在“团队资源管理器”的“挂起的更改”页中选择“操作>解决冲突”。

使用“解决冲突”窗口解决冲突的屏幕截图。

默认情况下,该窗口仅显示由最近尝试的操作引起的冲突。 当该窗口处于此状态时,会出现一条以“已应用路径筛选器”开头的消息。 要在工作区中显示所有冲突,请选择“获取所有冲突”。 随即显示一条以“<N> 冲突”开头的消息。

如果在对工作区中的文件进行更改后已经过去很长时间,则可能会发生新的冲突。 若要刷新“解决冲突”窗口,请选择“刷新”。

显示“解决冲突”窗口的屏幕截图。

每个冲突都包含可能帮助您解决冲突的信息,有时还会包含一些相关链接。 要获取详细信息,可以选择冲突,然后选择以下选项之一:

  • 选择 “历史记录”图标。“历史记录”,以查看文件的历史记录。 如果导致冲突的操作是合并或回滚,可以选择“历史记录”右侧的菜单控件,然后选择“源历史记录”或“目标历史记录”。 有关详细信息,请参阅获取项的历史记录

  • 选择 “比较”图标。“比较”,或选择该图标旁边的下拉箭头,然后选择一个命令。 “差异”窗口随即打开。

  • 选择 “批注”图标。“批注”,以查看对文件最新版本所做的所有更改的详细信息,包括每次做出更改的人员和时间。 请参阅使用批注查看文件更改

自动解决所有冲突

默认情况下,系统自动尝试对冲突采用“全部自动解决”,除非关闭此选项。 要关闭自动尝试“全部自动解决”,请选择“工具”>“选项”。 在“选项”对话框中的“源代码管理”>“Visual Studio Team Foundation Server”下,取消选择“尝试在冲突生成时自动解决冲突”。

还可以在“解决冲突”窗口中手动选择“全部自动解决”,然后选择以下选项之一:

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

  • 如果希望系统尝试解决冲突,但希望排除一些启发式方法,请选择“特定冲突类型”。

    “选择要解决的冲突”对话框随即显示。 选中或清除要启用或禁用的选项,然后选择“自动解决”。

    系统会尝试自动解决“挂起的更改”窗口中显示的冲突。 系统无法解决的任何冲突都会保留在该窗口中。 必须手动解决这些冲突。

了解自动选项

可以限制由“全部自动解决”选项自动解决的冲突类型。 依次选择“全部自动解决”和“特定冲突类型”后,会显示“选择要解决的冲突”对话框。

显示“选择要解决的冲突”对话框的屏幕截图。

冲突原因

示例

复选框选择


在每个文件版本中都进行了不冲突的内容更改。

在左侧的文件版本中,在开头添加了“零”。 在右侧的文件中,在末尾添加了“三”:

不冲突的内容更改的屏幕截图。

与任何内容更改冲突

在只对工作区执行的获取或签入操作期间,或只对目标版本执行的合并或回滚操作期间进行了内容更改。

向工作区或目标版本中添加了条目“四”和“五”:

只对工作区或目标执行的内容更改的屏幕截图。

只与本地工作区或目标分支中的内容更改冲突

在只对服务器执行的获取或签入操作期间,或只对源版本执行的合并或回滚操作期间进行了内容更改。

向服务器或源版本中添加了条目“四”和“五”:

只对服务器或源执行的内容更改的屏幕截图。

只与服务器版本或源分支中的内容更改冲突

在获取或签入操作期间重命名服务器上的文件,在合并或回滚操作期间重命名源分支中的文件。

签出了一个名为“launch.cs”的文件并对其进行了处理。 与此同时,某他人签入了对此同一文件产生影响的变更集。 该变更集未修改文件的内容,但将文件名更改为“start.cs”。

因重命名服务器版本或源分支中的文件导致的冲突

进行了通用内容更改,导致每个版本的内容相同。 或者,更改了一个文件,通过封闭签入生成将其签入,然后选择了“在本地保留我挂起的更改”选项。

对每个版本的更改产生了相同的文件内容。 可以对文件中的内容进行更改,如以下示例所示:

显示两个版本中相同内容更改的屏幕截图。

由服务器和工作区中的相同更改导致的冲突

此选项还可解决由所有其他操作(例如,重命名、删除、取消删除和创建分支)导致的冲突以及那些会产生相同文件的冲突。

提示

如果选中此复选框,在继续操作时,系统通过将服务器版本下载到工作区来解决这些更改。

自动合并所选冲突

若要尝试使用上述所有自动合并选项解决所选冲突,请选择一个或多个冲突,然后选择“自动合并”。

提示

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

注意

如果禁用“自动合并”,则必须手动解决冲突。

手动解决所选冲突

如果系统无法自动解决冲突,或者你想确保了解正在更改的内容,则必须手动解决冲突。 每次冲突时,系统会显示可用于解决冲突的措施。 显示的操作取决于冲突类型以及引起冲突的操作。

使用“合并”窗口

当冲突的内容更改引发冲突时,可以选择“在合并工具中合并更改”。 随即显示“合并”窗口

在合并工具中显示“合并”更改的屏幕截图。

在“合并”窗口中,可以:

  • 选择窗口布局:“垂直视图”、“水平视图”或“混合视图”。
  • 在差异和冲突之间导航。
  • 从文件的左侧和右侧版本中选择项,以便将其包含在结果中。
  • 在“结果”窗格中向文件键入其他内容。
  • 查看文件的历史记录。 有关详细信息,请参阅获取项的历史记录
  • 比较文件的各个版本。
  • 批注文件以查看谁做了哪些更改。 有关详细信息,请参阅使用批注查看该文件更改

如果对“结果”窗格的内容感到满意,则选择“接受合并”。

解决冲突的结果显示在“结果”窗格中。