Merge TFS放弃不处理回滚更改集

Merge TFS放弃不处理回滚更改集,merge,rollback,tfs-sdk,Merge,Rollback,Tfs Sdk,我们的情况是,工作已经在系统的主干中完成,但随后又被推迟到下一个版本。我们创建了一个分支,更改仍在主干中,然后仅回滚主干中的更改 然而,留给我们的是,每当我们想用最近的工作更新分支时,它都会尝试合并我们不想要的回滚变更集 我曾尝试从TFS命令提示符下使用/discard命令,但始终得到“没有要合并的更改”。下面是我的语法: D:\Projects\Big Project\Trunk>tf merge /discard /version:C28350~C28350 /recursive "D

我们的情况是,工作已经在系统的主干中完成,但随后又被推迟到下一个版本。我们创建了一个分支,更改仍在主干中,然后仅回滚主干中的更改

然而,留给我们的是,每当我们想用最近的工作更新分支时,它都会尝试合并我们不想要的回滚变更集

我曾尝试从TFS命令提示符下使用/discard命令,但始终得到“没有要合并的更改”。下面是我的语法:

D:\Projects\Big Project\Trunk>tf merge /discard /version:C28350~C28350 /recursive "D:\Projects\Big Project\Trunk" "D:\Projects\Big Project\Branch"
我甚至试着切换源和目标,但都没有成功:)

变更集出现在从主干到分支的潜在合并的候选变更集列表中。自初始分支以来,已经有一些签入到工作分支,但没有一个签入到该分支

有没有人有使用discard命令的经验,为什么它在这里不起作用


感谢您的建议

阅读
tf rollback
选项/keepmergehistory正好适用于这些场景。(请参见帮助文档末尾的相关示例)

您的场景不同,以下是我将遵循的步骤(省略命令提示):

关于步骤的评论:

  • 没有
    /discard
    选项

  • 即使你对它不感兴趣,也要检查它;请注意下一步中XXXX的变更集编号

  • 现在回滚那个特定的更改,并使用
    /keepmergehistory
    ,这样TFS就不会再问您合并这个更改了

  • 或者,您应该能够在主干中回滚回滚,然后使用此标志重新应用—但我不确定
    /keepmergehistory
    是否双向工作。。下面是:(不确定我是否正确地将参数放在了那里…)


    希望这有帮助:-)

    这可以通过告诉TFS在执行合并时忽略历史记录来实现。换句话说,可以使用无基础的合并:

    D:\Projects\Big Project\Trunk>tf merge/discard/version:C28350~C28350/recursive/baseless“D:\Projects\Big Project\Trunk”“D:\Projects\Big Project\Branch”


    我在上面的命令中添加了/baseless标志,这给了我从变更集中丢弃正确文件的结果。但不确定这是否是最终解决方案。也许有人更了解这个标志,可以解释这意味着什么??
    tf merge /version:C28350~C28350 /recursive "D:\Projects\Big Project\Trunk" "D:\Projects\Big Project\Branch"
    
    tf checkin /recursive "D:\Projects\Big Project\Branch"
    
    tf rollback /version:XXXX /recursive /keepmergehistory "D:\Projects\Big Project\Branch"
    
    tf rollback /version:C28350 /toversion:C28349 /recursive "D:\Projects\Big Project\Trunk"
    
    tf rollback /version:XXXX /toversion:XXXX-1 /recursive /keepmergehistory "D:\Projects\Big Project\Trunk"