【问题标题】:How to merge TFS changeset from branch A to branch C. Branch A was merged into branch B and there's no merge realationship between A and C如何将 TFS 变更集从分支 A 合并到分支 C。分支 A 被合并到分支 B 并且 A 和 C 之间没有合并关系
【发布时间】:2018-10-24 18:29:48
【问题描述】:

假设有 3 个 TFS 分支 - A、B 和 C。 您可以将变更集从 A 合并到 B,从 B 合并到 C。但不能将变更从 A 合并到 C。 A -> B -> C。 我需要将分支 A 中的一些变更集合并到分支 C 中。 所有变更集(来自所有用户)已经从 A 合并到 B。

当我尝试从 B 合并到 C 时,它没有提供我从 A 的变更集的列表(只有一个大变更集在一段时间内具有所有更改。) 当我尝试将我的特定更改集从 A 合并到 B 时,我也看不到它们,因为它们已经是分支 B 的一部分。

有没有一种聪明的方法可以将我从 A 或 B 中选择的更改合并到 C 中,并且不会破坏任何未来的合并。

谢谢。

【问题讨论】:

  • 嗨 vadim,有什么更新吗?
  • 我刚刚执行了毫无根据的合并。并非所有行都正确合并而没有显示冲突。这很棘手,特别是如果您仍然可以构建代码但某些修复程序不再存在。希望我用意外的合并结果更新了文件

标签: visual-studio-2015 tfs merge branch


【解决方案1】:

不可能实现 A -> B -> C 合并并保留所有历史记录。分支/移动将丢失文件夹历史记录,但单个文件历史记录实际上并没有丢失。它隐藏在文件历史记录行最左侧的小“展开我”箭头下。在文件的最旧历史条目上展开它,或者在您看到它的任何地方展开它,您还将从不再存在的旧位置看到该单个文件的历史记录。

但是,如您所见,合并变更集的分支是基于文件夹历史记录的。例如Branch B的第一个变更集将是从BranchA分支的变更集XXX。 p>

您将无法选择 BranchA 的旧变更集


解决方案

实现您需要的一种方法是将BranchA 与旧变更集直接合并到Branch C,即使您会收到如下警告提示:

源和目标之间不存在合并关系。 将执行无根据的合并

你需要在cmd中do a baseless merge目标分支。

tf merge /baseless <<source path>> <<target path>> /recursive

【讨论】:

    【解决方案2】:

    您所描述的称为无根据的合并。尽管您可以执行它们,但不建议这样做,并且几乎总是表明您的分支策略有问题。

    您可以使用tf 命令行工具执行毫无根据的合并。我不相信这在 Visual Studio IDE 中是可能的,尽管我可能是错的,因为我不得不执行毫无根据的合并已经很多年了。

    我强烈建议评估您的工作流程中发生的事情,这些事情使您处于需要执行毫无根据的合并的情况。可能是您的分支策略不充分,也可能是您的工作流程更适合其他 VCS,例如 Git。

    【讨论】:

      猜你喜欢
      • 2015-06-23
      • 2016-11-20
      • 2020-10-11
      • 2016-03-07
      • 2020-12-11
      • 2020-07-30
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多