如何当多个分支机构已合并就可以回滚从发展只有一个分支
我的工作流程:
- 有一个
master
分支 - 有一种
dev
分支 - 新特性分支是基于创建根据需要关闭
master
。然后将这些功能分支与dev
合并,以便我们可以在我们的开发服务器上对其进行测试。特征分支从不吸收除master
之外的任何其他分支,因此它们是纯粹的,因为它们中的任何一个都可以在任何时候单独与master
合并。 - 如果在合并任何功能分支到
dev
时有任何冲突,则通过切换到dev
并在dev
分支上拉动该功能分支并手动解决冲突,从而在dev
分支上解决。所以,没有任何功能分支从dev
分支拉出来保持纯净。 - 功能分支基于
master
,因为有些功能中的一个或多个功能可能无法为该月的部署做好准备,而其他所有功能都已完成并获得批准。在这种情况下,我们应该回滚上个月的状态,然后合并所有批准的分支,从不完整的分支中离开。
问题/问题:
这个月的部署,对10个大功能之一就是没有准备好,我们需要从发展拉动了这一点,使所有其他人可以一次开发服务器上进行测试没有这种不完整分支,然后可以与master
合并。如何当多个分支机构已合并就可以回滚从发展只有一个分支
我能想到的第一个选项如上所述,即,将dev
分支回滚到较旧状态(称为落实abcdef
),其中这些功能分支中没有任何分支被合并。然后,我需要在所有批准的分支机构合并,只有dev
。我可以使用git checkout abcdef
回滚到旧状态。但是,我认为之后会出现一些悬挂状态。我如何能够像在dev
分支上那样合并其他分支?
我还读了一些关于git revert
命令的地方。是否可以使用git revert
解决我的问题?
请注意,在本月部署之后,我需要退出的分支必须再次与dev
合并。
只要您指定父分支(即“干净”分支),您可以使用git revert
执行此操作。类似这样的:
git revert -m 1 <merge SHA>
这将做的是创建一个新的提交,恢复合并中的更改。如果你后来想撤消这个(例如,如果你想重新合并问题分支),只需恢复恢复的提交。
谢谢,但我必须恢复的提交不是最新的提交。在此分支必须恢复之后,我已经从其他功能分支提交了多个提交。 –
'git revert'实际上会生成给定提交的反向差异(或者,在合并提交中,合并的更改)。如果您必须恢复合并后完成的更改,则必须依次执行这些更改。 –
好的谢谢。让我试试这个。 –
'git revert'是回滚代码的唯一“干净”方式。如果你不想使用它,你必须重写你的分支历史记录。如果要更新功能分支(即rebase),则重写历史记录是一种很好的做法,但如果要回滚合并或提交列表,则不是。 – sboye
好的,谢谢@sboye我想用'git revert'来解决我的问题。 –