解决 Team Foundation 版本控制冲突

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

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

  • 解决冲突

  • 自动解决所有冲突

  • 自动合并单个冲突

  • 手动解决单个冲突

  • 了解自动选项

  • 从命令提示符处工作

  • 获取提示

解决冲突

利用“解决冲突”窗口来解决妨碍你的冲突。

冲突的更改会阻止签入

“解决冲突”窗口

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

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

每个冲突都包含可能帮助您解决冲突的信息,有时还会包含一些相关链接。 若要获取更多信息,您可以选择该冲突并选择以下选项:

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

    请参阅获取某项的历史记录

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

  • “比较文件”按钮 “比较”(或按钮右侧的菜单,然后选择一个命令)。 将显示“差异”窗口。

自动解决所有冲突

默认情况下,系统将自动尝试对冲突采用**“全部自动解析”,除非您已关闭此选项(请参阅提示)。 在“解决冲突”窗口中,您还可以手动选择“全部自动解析”**,然后做出以下选择:

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

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

    随即显示**“选择要解决的冲突”对话框。 选中或清除要启用或禁用的选项,然后选择“自动解决”**。 有关详细信息,请参阅下面的了解自动选项。

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

自动合并单个冲突

如果您要尝试使用下面的了解自动选项中所述的所有自动合并选项解决所选的冲突,请选择**“自动合并”**。

提示

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

备注

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

手动解决单个冲突

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

在合并工具中合并更改

如果冲突由相互冲突的内容更改引起,则可以选择**“在合并工具中合并更改”**。

当选择此操作时,将显示“合并”窗口。

合并窗口

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

在此窗口中,您可以:

  • 选择窗口布局:“垂直视图”“水平视图”“混合视图”

  • 在差异和冲突之间导航。

  • 从文件的左侧和右侧的版本中选择项,以便将它们包含在结果中。

  • 在“结果”窗格的文件中键入其他内容。

  • 查看文件的历史记录。 请参阅获取某项的历史记录

  • 比较文件的各个版本。

  • 批注文件以查看谁做了哪些更改。 请参阅使用批注查看文件更改

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

了解自动选项

在一些特殊情况下,您可能希望限制通过**“全部自动解析”**选项自动解决的冲突的类型。

如果选择**“全部自动解析”,然后选择“特定冲突类型”,则将显示“选择要解决的冲突”**对话框。

“选择要解决的冲突”对话框

如果您希望系统自动解决由于以下原因而发生的冲突...

如此示例中所述…

则选择此复选框…

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

在左侧的文件版本中,在开头添加了。 在右侧的文件版本中,在末尾添加了

不冲突的内容更改

与任何内容更改冲突

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

向工作区或目标版本中添加了

工作区或目标特有的内容更改

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

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

向服务器或源版本中添加了

服务器或源特有的内容更改

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

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

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

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

  • 所做的通用内容更改导致每个版本的内容相同

  • 您更改了某一文件,通过封闭签入生成签入该文件,然后选择了“在本地保留我的挂起更改”选项

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

在每个版本中进行了相同的内容更改

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

提示

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

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

从命令提示符处工作

提示

  • 提示默认情况下,系统自动尝试对冲突采用**“全部自动解析”。 若要更改选项,请从菜单栏中选择“工具”,再选择“选项”,然后在“选项”对话框中导航到“源代码管理”,再导航到“Visual Studio Team Foundation Server”。 清除“尝试在产生冲突时自动解决冲突”**复选框。

  • 提示您的团队是否需要协作解决大量冲突(例如,可能在大型基本代码合并操作之后发生的冲突)? 如果是这样,共享开发计算机上的公共工作区可能会有用。 请参阅创建和使用工作区