Visual studio TFS baseless merges-已删除并重新创建目标分支,无基础合并不再工作

Visual studio TFS baseless merges-已删除并重新创建目标分支,无基础合并不再工作,visual-studio,tfs,branching-and-merging,Visual Studio,Tfs,Branching And Merging,基于以下需求,我在源代码管理上有以下分支: 我们有多个环境,但在本例中,重要的是测试和生产环境。我们有多个并发项目,需要由单独的团队开发,并在单个测试环境中进行测试。当它们准备就绪时,可以将它们推送到生产环境中(根据需要在集成环境中进行额外的测试)。我们无法将功能组织到专门的版本中——它们需要按照业务的需要发布 因此,我们在结构方面确定的是每个环境的分支加上特性分支,我们刚刚接受我们将执行到测试分支中的无基础合并。这没什么大不了的,因为我们可以通过UI合并特定的变更集进行测试 $/Benefit

基于以下需求,我在源代码管理上有以下分支:
我们有多个环境,但在本例中,重要的是测试和生产环境。我们有多个并发项目,需要由单独的团队开发,并在单个测试环境中进行测试。当它们准备就绪时,可以将它们推送到生产环境中(根据需要在集成环境中进行额外的测试)。我们无法将功能组织到专门的版本中——它们需要按照业务的需要发布

因此,我们在结构方面确定的是每个环境的分支加上特性分支,我们刚刚接受我们将执行到测试分支中的无基础合并。这没什么大不了的,因为我们可以通过UI合并特定的变更集进行测试

$/Benefits/Source/Main-我们进行生产和/或集成部署的主干
$/Benefits/Source/Test-我们将功能合并到其中进行主要测试的分支
$/Benefits/Source/Dev/LURE-7-从主干分支
$/Benefits/Source/Dev/[其他功能]-从主干分支

我有一个功能分支,它被合并以成功地测试和测试。不幸的是,测试分支被几次合并搞得一团糟,我们决定简单地删除并重新创建测试分支将是最好的方法。我们删除了测试分支,并从主干中重新创建了它

我现在需要将我的特性分支重新合并到测试中,我的特性分支似乎保留了它的无根据合并的历史记录,并且认为我的更改已经在目标分支中了。我已经验证了特定的文件更改不在其中

实际上,当我在合并向导的第一页中选择“特定变更集”时,下一页不会显示任何比原始分支更新的变更集

我的功能分支的历史记录,请查看分支后的更改:

合并向导的第1页:

向导的第2页,它没有看到分支后的2个变更集:

我的测试分支的历史记录,您可以看到它已被删除并重新创建:


(6/27我合并了我的功能分支,7/5我删除并重新创建了测试分支)

当您在TFS中删除分支时,它实际上仍然存在,只是隐藏了。如果使用相同的名称/位置创建新分支,则TFS将取消删除旧分支

最好的办法是

  • 使用新名称/位置创建新分支。如果要维护旧的已删除分支的历史记录,请执行此操作
  • 从命令行使用
    tf destroy
    。如果历史不重要,就用这个小心使用此命令。一旦它消失了,唯一的方法就是从TFS数据库的备份中取回它
    新的测试分支和旧的分支有相同的名称和位置吗?是的,这就是为什么我认为一切都是一团糟。假设这就是问题所在,我希望有一个神奇的按钮可以让我的功能分支实现。正确,基本上TFS已经撤销了删除,旧的分支仍然存在。您有2个选项,在新位置创建新的测试分支,使路径不同。如果要维护旧分支的历史记录,则最好使用此选项。如果您愿意丢失历史记录,请从命令行使用
    tf destroy
    。这将核弹测试分支,它将永远消失。小心!非常感谢。出于某种原因,尽管我知道TFS的行为是这样的,但我始终认为delete实际上意味着delete。在这种情况下,测试分支可以像我希望的那样短暂。不需要保留它的历史记录,它就在那里,可以作为测试部署的源位置。tf destroy工作正常,我理解使用它的谨慎性。我认为对于我来说,这是一个正确的解决方案,因为该分支只是用来构建和部署特定的测试功能。我们总是可以将功能重新合并到它中,或者从主干上重新创建它。是的,警告更多地针对看到这个答案的其他人
    tf destroy
    几乎不可恢复,因此使用时要格外小心。如果要在销毁后恢复某些内容,则需要在运行destroy命令之前使用最新的数据库备份,这样在执行备份后可能会丢失签入的其他工作。