解决 Team Foundation 版本控制冲突
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018
Visual Studio 2022 |Visual Studio 2019 |Visual Studio 2017 |Visual Studio 2015 |Visual Studio 2013
使用 Team Foundation 版本控制管理文件的优点是,多人可以同时处理文件。 一个缺陷就是你有时必须在获取、签入、取消搁置、合并或回滚文件前解决冲突。
尽管遇到冲突会令人沮丧,但系统提供了帮助您了解和解决冲突的信息和工具。
解决冲突
利用“解决冲突”窗口来解决妨碍你的冲突。
默认情况下,该窗口仅显示由最近尝试的操作引起的冲突。 当窗口处于此状态时,将显示一条消息,开始: 应用路径筛选器。 若要显示工作区中的所有冲突,请选择 “获取所有冲突”。 显示以: n 冲突 () 开头的消息。
如果在对工作区中的文件进行更改后已经过去很长时间,则可能会发生新的冲突。 若要刷新 “解决冲突 ”窗口,请选择“ 刷新”。
每个冲突都包含可能帮助您解决冲突的信息,有时还会包含一些相关链接。 若要获取更多信息,您可以选择该冲突并选择以下选项:
查看文件的 历史记录。 如果导致冲突的操作是合并或回滚,则可以选择 历史记录 右侧的菜单控件,然后选择 源历史记录 或 目标历史记录。请参阅 获取项的历史记录。
批注 以查看对文件最新版本所做的所有更改的详细信息,包括每次更改的人员以及更改时间。 请参阅 使用批注查看文件更改。
将 (或菜单与按钮右侧进行比较,然后选择命令) 。 此时会显示 差异 窗口。
自动解决所有冲突
默认情况下,系统会自动尝试自动解决所有冲突,除非已关闭此选项, (看到使用技巧) 。 在“解决冲突”窗口中,还可以手动选择 “自动解决所有”,然后选择:
如果希望系统使用其所有启发法自动解决冲突,请选择“ 所有冲突类型 ”。
如果希望系统尝试解决冲突,请选择 “特定冲突类型 ”,但想要排除一些启发式。
此时会显示“ 选择要解决的冲突 ”对话框。 选中或清除要启用或禁用的选项,然后选择 “AutoResolve”。 有关详细信息,请参阅下面的 自动选项 。
系统会尝试自动解决在“挂起的更改”窗口中显示的冲突。 系统无法解决的所有冲突都将保留在该窗口中。 必须 手动解决 这些冲突。
自动合并单个冲突
如果要尝试使用下面的自动选项中所述的所有 AutoMerge 选项来解决所选冲突,请选择“自动合并”。
提示
可以按住 Ctrl 或 Shift 键,然后选择多个冲突。
注意
如果禁用 AutoMerge ,则必须 手动解决此冲突。
手动解决单个冲突
如果系统无法自动解决冲突,或者您要确保了解正在更改的内容,则必须手动解决冲突。 每次冲突时,系统会显示可用于解决冲突的措施。 所显示的措施具体取决于冲突类型以及引起冲突的操作。
在合并工具中合并更改
当冲突由内容更改导致时,可以选择 合并工具中的合并更改。
当选择此操作时,将显示“合并”窗口。
解决冲突的工作结果显示在 “结果 ”窗格中。
在此窗口中,您可以:
选择窗口的布局: 垂直视图、 水平视图、 混合视图。
在差异和冲突之间导航。
从文件的左侧和右侧的版本中选择项,以便将它们包含在结果中。
在“结果”窗格的文件中键入其他内容。
查看文件的历史记录。 请参阅 获取项的历史记录。
比较文件的各个版本。
批注文件以查看谁做了哪些更改。 请参阅 使用批注查看文件更改。
如果对 结果 窗格的内容感到满意,请选择 “接受合并”。
了解自动选项
在某些情况下,你可能希望限制 AutoResolve All 选项自动解决的冲突类型。
选择 “自动解决所有”,然后选择 “特定冲突类型”时,将显示“ 选择冲突解决 ”对话框。
如果希望系统自动解决冲突,因为...
如此示例中所述...
然后选中此复选框...
在每个文件版本中进行了互不冲突的内容更改
在左侧的文件版本中,开始添加 零 。 在右侧的文件中,末尾添加了 三 个:

与任何内容更改冲突
只对工作区(在获取或签入操作期间)或目标版本(在合并或回滚操作期间)进行了内容更改
已将四 个和 五 个添加到工作区或目标版本:

只与本地工作区或目标分支中的内容更改冲突
只对服务器(在获取或签入操作期间)或源版本(在合并或回滚操作期间)进行了内容更改
已将 4 个和 5 个添加到服务器或源版本:

只与服务器版本或源分支中的内容更改冲突
服务器(在获取或签入操作期间)或源分支(在合并或回滚操作期间)中的文件已重命名
已签出名为 launch.cs 的文件,并处理该文件。 与此同时,某他人签入了对此同一文件产生影响的变更集。 该更改集未修改文件的内容,但确实将文件的名称更改为 start.cs。
因重命名服务器版本或源分支中的文件导致的冲突
所做的通用内容更改导致每个版本的内容相同
你更改了一个文件,通过封闭签入生成签入它,并选择了“ 保留我挂起的本地更改 ”选项
对每个版本的更改产生了相同的文件内容。 可以对文件中的内容进行更改,如以下示例所示:
此选项还解决了由所有其他 (操作引起的冲突,例如重命名、删除、删除、取消删除和分支) 导致相同的文件。
提示
如果选择此复选框,在继续操作时,系统将通过将服务器版本放置(下载)到工作区上来解决这些更改。
由服务器和工作区中的相同更改导致的冲突
从命令提示符处工作
提示
默认情况下,系统会自动尝试 自动解决所有 冲突。 若要更改选项,请在菜单栏中选择“工具”、“选项”,然后在“选项”对话框中导航到“源代码管理”Visual Studio Team Foundation Server。 清除 “尝试在生成冲突时自动解决冲突 ”复选框。
你的团队是否需要协作来解决大量冲突 (,例如,在大型代码库) 合并操作后可能发生的冲突? 如果是这样,共享开发计算机上的公共工作区可能会有用。 请参阅 创建和使用工作区。