3

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

剩下的就是当我们想用最近的工作更新分支时,它会尝试合并我们不想要的回滚变更集。

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

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

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

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

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

感谢您的建议

4

2 回答 2

1

通读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"

关于步骤的评论:

  1. 没有/discard选项

  2. 检查该更改,即使您对此不感兴趣;请注意下一步中 XXXX 的变更集编号...

  3. 现在回滚该特定更改,并使用/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"

希望这可以帮助 :-)

于 2011-10-05T13:18:56.933 回答
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"

于 2013-07-05T21:14:38.460 回答