HowTo:正确地将TFS分支与缺少的变更集同步?

时间:2016-10-03 15:10:41

标签: tfs version-control tfs2015

背景

如果我合并我们的main分支到我们的development分支,TFS将声明没有提交更改。然而,文件级别比较(使用WinMerge)清楚地表明存在差异(例如文件丢失,内容不同的文件等)。

简而言之,我们的maindevelopment分支不再同步,这很可能是由于之前TFS迁移过程中丢失的变更集所致。

问题

产生以下内容的最佳方法是什么?

  1. 通过以下方式同步maindevelopment分支:在development分支上执行所有必要的插入/更新/删除操作。 (即main是主副本)。
    • 在流程结束时, WinMerge 应表明两个分支之间存在零(0)差异。
  2. 保持development分支历史不变。
  3. 通知TFS development分支现在与main完全同步,以便:
    • TFS不会尝试与development
    • 合并较早的main变更集
    • 在{em>合并操作期间,只有development的未来更改才会被推送到main
  4. TFS不是我的专业领域 - 非常感谢您提供的任何指导。

    上下文

    • Visual Studio 2015
    • TFS(版本14.95.25122)

    参考

    • Merge Command
      • “执行没有基本版本的合并。也就是说,允许用户合并没有合并关系的文件和文件夹。在无基础合并之后,存在合并关系,以及将来的合并没有毫无根据。“
        • 虽然Development已从Main分支,但看起来这可能会解决我缺乏历史记录(即缺少变更集)的问题。
    • TFS Merge: Best Practices
    • TFS: Overwrite a branch with another
      • tf merge A B -r -force -version:T
        • 我不认为这对我们有用,因为缺少变更集。

1 个答案:

答案 0 :(得分:0)

当TFS进行合并时,它将合并基于先前的合并历史记录,而不是源文件和目标文件的实际内容。

此问题可能是由于在执行合并时选择keep target或同时执行与discard选项的合并(使用命令行TF merge /discard)。

要解决此问题,您可以尝试:

  1. /force选项与tf merge命令一起使用。如果有一个先前已合并的变更集(可能不正确),并且您想要再次合并它。 / force标志忽略合并历史记录,该合并历史记录指示特定变更集先前已从源合并到目标,并再次合并变更集。

  2. 使用Rollback撤消上一个合并。如果您最近完成了已弃用更改集的合并。在历史记录中找到它,右键单击变更集并选择Rollback并检查已撤消的代码。