TFS 2010如何忽略子分支中2个变更集不合并到父分支?
解决TFS 2010跳过特定变更集合并的问题
针对你的场景——子分支里有变更集1001(误签内容)和1002(回滚1001的操作),不想把它们合并到父分支也不想在合并菜单里显示,我来拆解下你的问题:
你提到的命令是否可行?
你写的tf merge childbranch parentbranch /r /version:1001~1002...有两个小问题:
- 版本范围的语法多了三个点,TFS里指定连续变更集范围用
C1001~C1002(加上C前缀更明确,避免和版本号混淆)就可以了; - 这个命令默认会执行实际合并操作——虽然1002是回滚1001,合并后父分支代码不会有变化,但更高效的方式是用
/discard参数直接标记这些变更集为已合并,不用做实际的代码变更。
正确的命令应该是:
tf merge $/YourProject/ChildBranch $/YourProject/ParentBranch /r /version:C1001~C1002 /discard
这个命令的作用是:告诉TFS你已经“丢弃”了这两个变更集的合并需求,TFS会在后台标记它们为已合并状态,但不会对父分支的代码做任何修改,完美符合你“不合并内容、也不让它们出现在合并菜单”的需求。
回滚变更集会不会产生干扰?
完全不会。因为变更集1001和1002是一对抵消操作:1001的误签内容被1002彻底回滚了,两者的代码变更相互抵消。不管是执行实际合并还是用/discard标记已合并,都不会给父分支带来任何代码变化,TFS也能正确识别这两个变更集已经被处理过,不会在后续的合并候选列表里再出现它们。
额外验证步骤
执行完命令后,你可以用下面的命令确认效果:
tf merge /candidates $/YourProject/ChildBranch $/YourProject/ParentBranch /r
如果输出里没有变更集1001和1002,就说明操作成功了,后续合并时这两个变更集不会再出现在菜单里。
内容的提问来源于stack exchange,提问作者KI1
相关产品推荐
相关产品推荐

