【问题标题】:TFS2012 Is it possible to prune a branch off the base and re-attach one layer downTFS2012 是否可以从基础上修剪一个分支并重新连接一层
【发布时间】:2016-11-17 00:14:42
【问题描述】:

我在 TFS2012 中有以下树

Base-->Branch1-->Dev1
 |
 \/
Dev2

我想将 Dev2 从 Base 复制到 Branch1,以便新树看起来像这样:

Base-->Branch1-->Dev1
          |
         \/
        Dev2

可能很重要的细节:Base 和 Branch1 在各个方面相同。 Branch1 历史上唯一的项目是它最初是从 Base 创建的。 Dev1 和 Dev2 都有重大变化,但实际上是基于相同的原件。

有没有办法在使用无根据的合并的情况下完成这个?

或者,如果我从 Branch1 创建一个新的分支 Dev3,是否有任何方法可以将 Dev2 历史中的所有更改集应用到 Dev3。理论上,这将导致 Dev3==Dev2。然后我可以删除 Dev2。

【问题讨论】:

  • 为什么不想使用 baseless 合并?
  • @Cece-MSFT 我不想使用毫无根据的合并,因为 Dev2 对文件夹结构和代码。由于 Dev2 (Base) 的父级在各个方面都与 Branch1(Dev2 的同级)相同,如果有某种方法可以搁置 Dev2 中的所有更改集,然后将搁置的更改集应用到 Branch1 的新分支,那就是d 节省我的工作时间。我看到的一个建议是回滚并撤消回滚但搁置撤消,但这会污染更改历史记录。希望有更好的选择。谢谢。

标签: visual-studio tfs branching-and-merging source-control-explorer


【解决方案1】:

一个简单的方法是使用baseless merge来创建Branch1和Dev2之间的关系,然后通过右键单击Dev2分支并选择Reparent(reparent to Branch1)来重新定义Dev2,如下图所示:

【讨论】:

  • 由于我在原始帖子中明确要求使用无根据合并的解决方案(原因在我的帖子中的 cmets 中引用),因此我无法将此标记为正确的解决方案。
  • 将变更集从一个项目迁移到另一个项目(两个不同的项目)没有意义,因为变更集适用于源项目,而不是目标项目。如果您想保留变更集,恐怕您需要通过使用 Branch1 版本来解决冲突。
  • 我的重点是 Branch1 和 Base 是相同的。因此理论上将导致 Base 和 Dev2 之间的差异的相同更改集应用到 Branch1 之外的新分支(例如 Dev3)应该会导致 Dev3==Dev2。根据我迄今为止的研究,最不痛苦的方法是将 Dev2 回滚到原始 Base,撤消回滚,搁置回滚更改,然后将搁置的撤消应用到 Dev3。这会污染历史,但据我了解,无论如何使用毫无根据的合并都会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 2019-05-04
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多