如何当多个分支机构已合并就可以回滚从发展只有一个分支

问题描述:

我的工作流程:

  1. 有一个master分支
  2. 有一种dev分支
  3. 新特性分支是基于创建根据需要关闭master。然后将这些功能分支与dev合并,以便我们可以在我们的开发服务器上对其进行测试。特征分支从不吸收除master之外的任何其他分支,因此它们是纯粹的,因为它们中的任何一个都可以在任何时候单独与master合并。
  4. 如果在合并任何功能分支到dev时有任何冲突,则通过切换到dev并在dev分支上拉动该功能分支并手动解决冲突,从而在dev分支上解决。所以,没有任何功能分支从dev分支拉出来保持纯净。
  5. 功能分支基于master,因为有些功能中的一个或多个功能可能无法为该月的部署做好准备,而其他所有功能都已完成并获得批准。在这种情况下,我们应该回滚上个月的状态,然后合并所有批准的分支,从不完整的分支中离开。

问题/问题:

这个月的部署,对10个大功能之一就是没有准备好,我们需要从发展拉动了这一点,使所有其他人可以一次开发服务器上进行测试没有这种不完整分支,然后可以与master合并。如何当多个分支机构已合并就可以回滚从发展只有一个分支

我能想到的第一个选项如上所述,即,将dev分支回滚到较旧状态(称为落实abcdef),其中这些功能分支中没有任何分支被合并。然后,我需要在所有批准的分支机构合并,只有dev。我可以使用git checkout abcdef回滚到旧状态。但是,我认为之后会出现一些悬挂状态。我如何能够像在dev分支上那样合并其他分支?

我还读了一些关于git revert命令的地方。是否可以使用git revert解决我的问题?

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

+1

'git revert'是回滚代码的唯一“干净”方式。如果你不想使用它,你必须重写你的分支历史记录。如果要更新功能分支(即rebase),则重写历史记录是一种很好的做法,但如果要回滚合并或提交列表,则不是。 – sboye

+0

好的,谢谢@sboye我想用'git revert'来解决我的问题。 –

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

git revert -m 1 <merge SHA> 

这将做的是创建一个新的提交,恢复合并中的更改。如果你后来想撤消这个(例如,如果你想重新合并问题分支),只需恢复恢复的提交。

+0

谢谢,但我必须恢复的提交不是最新的提交。在此分支必须恢复之后,我已经从其他功能分支提交了多个提交。 –

+0

'git revert'实际上会生成给定提交的反向差异(或者,在合并提交中,合并的更改)。如果您必须恢复合并后完成的更改,则必须依次执行这些更改。 –

+0

好的谢谢。让我试试这个。 –