如何在合并多个分支时仅从开发中回滚一个分支

时间:2017-07-07 06:50:08

标签: git github

我的工作流程:

  1. 有一个dev分支
  2. 有一个master分支
  3. 根据需要在dev之后创建新功能分支。然后将这些功能分支与master合并,以便我们可以在开发服务器上对其进行测试。功能分支从不接受除master之外的任何其他分支,因此它们是纯粹的,因为任何分支都可以随时与dev单独合并。
  4. 如果在将任何功能分支合并到dev时发生任何冲突,则可以通过切换到dev然后获取该功能分支并解决冲突来解决dev分支本身在dev分支上手动操作。因此,没有任何功能分支从master分支拉出来保持它们纯净。
  5. 功能分支基于dev,因为有时一个或多个功能可能尚未为该月的部署做好准备,而所有其他功能都已完成并获得批准。在这种情况下,我们应该回滚上个月的master分支的状态,然后合并所有已批准的分支,从而不再使用不完整的分支。
  6. 问题/问题:

    对于本月的部署,10个功能中的一个尚未准备就绪,我们需要从开发中解决这个问题,以便所有其他功能都可以在开发服务器上进行一次测试而不需要这个不完整的分支,然后可以与{{1}合并}。

    我能想到的第一个选项如上所述,即将dev分支回滚到较旧的状态(比如提交abcdef),其中没有合并这些特征分支。然后我需要仅在dev上合并所有已批准的分支。我可以使用git checkout abcdef回滚到那个旧状态。但我认为在那之后它会进入一些悬挂状态。我将如何能够像在dev分支上通常那样合并其中的其他分支?

    我还在某处阅读git revert命令。是否可以使用git revert解决我的问题?

    请注意,在本月部署之后,我需要撤出的分支机构必须再次与dev合并。

1 个答案:

答案 0 :(得分:2)

只要您指定父分支(即“干净”分支),就可以使用git revert执行此操作。像这样:

git revert -m 1 <merge SHA>

这样做会创建一个新的提交,以恢复合并中的更改。如果您稍后要撤消此操作(例如,如果要重新合并问题分支),则只需还原已还原的提交。