如何将 TFS 变更集从分支 A 合并到分支 C。分支 A 已合并到分支 B,并且 A 和 C 之间没有合并关系
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
假设有 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 中,并且不破坏任何未来的合并。
谢谢。
您所描述的称为无基础合并。尽管您可以执行它们,但不建议这样做,并且几乎总是表明您的分支策略存在问题。
您可以使用 tf
命令行工具执行无基础合并。我不相信这在 Visual Studio IDE 内是可能的,尽管我可能是错的,因为自从我不得不执行无基础的合并以来已经有很多年了。
我强烈建议评估在您的工作流程中发生的事情,这些事情让您处于需要执行无基础合并的情况。可能是你的分支策略不合适,也可能是你的工作流程更适合另一个 VCS,比如 Git.
不可能实现A -> B -> C 合并并保留所有历史记录。 Branching/move 会 丢失文件夹历史记录 ,但单个文件历史记录实际上并没有丢失。它隐藏在文件历史记录行最左侧的 "expand me" 小箭头下。在文件的最旧历史记录条目或任何您看到它的地方展开它,您将从不再存在的旧位置看到该单个文件的历史记录。
但是,如您所见,合并变更集的分支是基于文件夹历史记录。例如Branch B
的第一个变更集将是变更集XXX分支来自 BranchA
.
您将无法 select BranchA
的旧变更集
解决方案
一种实现您需要的方法是直接将 BranchA
与旧变更集合并到 Branch C
即使您会收到如下警告提示:
A merge relationship does not exist between the source and the target.
A baseless merge will be performed.
您需要do a baseless merge cmd 中的目标分支。
tf merge /baseless <<source path>> <<target path>> /recursive
假设有 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 中,并且不破坏任何未来的合并。
谢谢。
您所描述的称为无基础合并。尽管您可以执行它们,但不建议这样做,并且几乎总是表明您的分支策略存在问题。
您可以使用 tf
命令行工具执行无基础合并。我不相信这在 Visual Studio IDE 内是可能的,尽管我可能是错的,因为自从我不得不执行无基础的合并以来已经有很多年了。
我强烈建议评估在您的工作流程中发生的事情,这些事情让您处于需要执行无基础合并的情况。可能是你的分支策略不合适,也可能是你的工作流程更适合另一个 VCS,比如 Git.
不可能实现A -> B -> C 合并并保留所有历史记录。 Branching/move 会 丢失文件夹历史记录 ,但单个文件历史记录实际上并没有丢失。它隐藏在文件历史记录行最左侧的 "expand me" 小箭头下。在文件的最旧历史记录条目或任何您看到它的地方展开它,您将从不再存在的旧位置看到该单个文件的历史记录。
但是,如您所见,合并变更集的分支是基于文件夹历史记录。例如Branch B
的第一个变更集将是变更集XXX分支来自 BranchA
.
您将无法 select BranchA
解决方案
一种实现您需要的方法是直接将 BranchA
与旧变更集合并到 Branch C
即使您会收到如下警告提示:
A merge relationship does not exist between the source and the target. A baseless merge will be performed.
您需要do a baseless merge cmd 中的目标分支。
tf merge /baseless <<source path>> <<target path>> /recursive