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

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

我已经尝试在 TFS 命令提示符下使用/discard 命令,但一直收到“没有要合并的更改”。这是我的语法如下:

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

我什至尝试切换源和目标无济于事:)

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

有没有人有使用丢弃命令的经验,为什么它可能在这里不起作用?

谢谢你的建议

最佳答案

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

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

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"

对步骤的评论:
  • 没有 /discard 选项
  • 检查那个变化,即使你对它不感兴趣;请注意下一步中 XXXX 的变更集编号...
  • 现在回滚该特定更改,并使用 /keepmergehistory 以便 TFS 不会再询问您合并此更改。

  • 或者,您应该能够回滚主干中的回滚,然后使用此标志重新应用 - 但我不确定 /keepmergehistory 是否可以双向工作......这里是:(不确定我是否正确地将参数放在那里...... )
    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"
    

    希望这可以帮助 :-)

    关于merge - TFS 丢弃不适用于回滚变更集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7455454/

    10-13 07:58