Visual studio 2015 回滚后TFS与子分支的合并问题

Visual studio 2015 回滚后TFS与子分支的合并问题,visual-studio-2015,tfs,merge,Visual Studio 2015,Tfs,Merge,在我的项目的两个分支之间合并TFS时,我遇到了一个令人不安的问题。让我试着解释一下这个问题 我有一个根分支X 我开发了一些功能F1,并向它提交了一些代码,比如C1 我收到了另一个功能F2的请求,该功能将由另一个团队与F1并行开发 我创建了一个名为Y的R的子分支 我从分支X回滚了提交C1 我从X创建了另一个分支,比如Z,其中正在开发F2 我继续在分支Y上开发F1,并向其提交更多代码 同时F2完成并在分支Z上测试。我们将F2从分支Z合并到分支X 现在F1也已经过测试,并且是稳定的。它必须合并回分支X

在我的项目的两个分支之间合并TFS时,我遇到了一个令人不安的问题。让我试着解释一下这个问题

  • 我有一个根分支X
  • 我开发了一些功能F1,并向它提交了一些代码,比如C1
  • 我收到了另一个功能F2的请求,该功能将由另一个团队与F1并行开发
  • 我创建了一个名为Y的R的子分支
  • 我从分支X回滚了提交C1
  • 我从X创建了另一个分支,比如Z,其中正在开发F2
  • 我继续在分支Y上开发F1,并向其提交更多代码
  • 同时F2完成并在分支Z上测试。我们将F2从分支Z合并到分支X
  • 现在F1也已经过测试,并且是稳定的。它必须合并回分支X
  • 为此,我必须首先将X合并到Y以同步F2代码,然后将分支Y中的F1合并回分支X

    但每次我尝试这样做时,TFS都会回滚对提交C1的更改(删除C1中添加的新文件和编辑文件中的撤消代码),甚至没有给我解决冲突的机会

    我甚至尝试将X合并到Y,并手动解决了所有冲突,这花费了我将近2-3个小时,因为涉及到很多文件。 但当我把Y合并回X时,这种情况再次发生。 我已经在这个问题上反复讨论了一段时间了


    有什么方法可以让我更容易地解决这个问题吗?谢谢

    在执行回滚时,您似乎没有使用
    /keepmergehistory
    选项

    tf rollback /keepmergehistory
    
    仅当一个或多个变更集 您正在回滚包含分支或合并更改。具体说明 如果希望将来在同一源和同一源之间进行合并,请选择此选项 目标以排除要回滚的更改

    您可以查看ISAAH4110的答案,并对此问题进行详细解释


    现在,您可以像jessehouwing建议的那样使用cherry pick merge每个变更集作为一种解决方法。

    这看起来您在执行回滚时没有使用
    /keepmergehistory
    选项

    tf rollback /keepmergehistory
    
    仅当一个或多个变更集 您正在回滚包含分支或合并更改。具体说明 如果希望将来在同一源和同一源之间进行合并,请选择此选项 目标以排除要回滚的更改

    您可以查看ISAAH4110的答案,并对此问题进行详细解释


    现在,您可以像jessehouwing建议的那样,使用cherry pick合并每个变更集作为解决办法。

    您可以使用cherry pick merge合并变更集编号,并跳过回滚提交。@jessehouwing cherry pick仅在所选变更集中使用对吗?但是,当我从Y合并回X时,这不是仍然是一个问题吗?我不能跳过它,是吗?当然可以,但您需要选择合并每个变更集。您可以使用“选择合并”合并变更集编号,并跳过回滚提交。@Jessehowing cherry pick作为选定变更集中的唯一选项对吗?但是当我从Y合并回X时,这不是仍然是一个问题吗,我不能跳过它,可以吗?当然可以,但是你需要仔细挑选合并每个变更集。