在我的 TFS 源代码控制存储库中,我有三个分支,布局如下:
MAIN
|
-> DEV
|
-> TEST
我想直接从 TEST 合并到 MAIN,而不通过 DEV 分支合并。
MAIN .......
| .
-> DEV .
| V
-> TEST
我无法找到一种简单的方法来实现这一目标。请帮我看看这是否可行。
最佳答案
这是可能的,但不推荐。这就是您所说的 baseless merge在TFS中。如果不安装任何 Visual Studio 扩展,您只能从命令行执行此操作。
因为 TFS 不会查找正在合并的文件的共同祖先,所以它会将每一项更改都视为冲突,并要求您手动合并每一个文件。通过 DEV 合并时,TFS 将能够找到公共(public)父级并使用它进行 3 路合并。
此外,一旦 TFS 在两个不相关的分支之间合并,它将在两个路径之间创建分支关系。接下来它将显示从 TEST 到 MAIN 的路径作为有效的合并方向。
有一种替代方案,即货架移植的形式。这基本上搁置了所有更改的文件,并允许您将更改的文件应用到不同的分支,而无需创建分支关系。
如果所有这些都没有阻止您,那么可以采取以下方法:
- 在 Visual Studio 的“合并”窗口中,在下拉菜单中输入您想要手动合并的路径(VS2012 及更高版本)
- 在命令行上使用
tf merge
/baseless /recursive source target
创建新的合并关系。 - 使用Visual Studio Power Tools '
tfpt unshelve
/migrate /source:<> /target:<> shelvesetname
将在一个分支上创建的搁置集的更改取消搁置到另一分支。
关于TFS从子子直接合并到我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501555/