我们的情况是在我们系统的主干中已经完成了工作,但随后我们将其用于下一个版本。我们创建了一个分支,其中的更改仍然在主干中,然后仅在主干中回滚更改。
但是我们留下的是,每当我们想要使用最近的工作来更新分支时,它会尝试合并我们不想要的回滚变更集。
我尝试过使用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命令的经验以及为什么它可能无法在这里工作?
感谢您的建议
答案 0 :(得分:1)
通过tf rollback
MSDN阅读选项/keepmergehistory
正是针对这些情景的。 (请参阅帮助doco末尾的相关示例)。
您的方案不同,以下是我将遵循的步骤(省略命令提示符):
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"
希望这会有所帮助: - )
答案 1 :(得分:1)
这可以通过告诉TFS在执行合并时忽略历史记录来实现。换句话说,它可以使用无基础合并来完成:
D:\Projects\Big Project\Trunk>tf merge /discard /version:C28350~C28350 /recursive /baseless "D:\Projects\Big Project\Trunk" "D:\Projects\Big Project\Branch"