解决 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 键选择多个冲突。
注意
如果禁用“自动合并”,则必须手动解决冲突。
手动解决所选冲突
如果系统无法自动解决冲突,或者你想确保了解正在更改的内容,则必须手动解决冲突。 每次冲突时,系统会显示可用于解决冲突的措施。 显示的操作取决于冲突类型以及引起冲突的操作。
使用“合并”窗口
当冲突的内容更改引发冲突时,可以选择“在合并工具中合并更改”。 随即显示“合并”窗口。
在“合并”窗口中,可以:
- 选择窗口布局:“垂直视图”、“水平视图”或“混合视图”。
- 在差异和冲突之间导航。
- 从文件的左侧和右侧版本中选择项,以便将其包含在结果中。
- 在“结果”窗格中向文件键入其他内容。
- 查看文件的历史记录。 有关详细信息,请参阅获取项的历史记录。
- 比较文件的各个版本。
- 批注文件以查看谁做了哪些更改。 有关详细信息,请参阅使用批注查看该文件更改。
如果对“结果”窗格的内容感到满意,则选择“接受合并”。
解决冲突的结果显示在“结果”窗格中。