我正在学习git-flow,刚刚执行了git flow feature finish <feature-name>
命令,这将我的功能分支合并到develop分支并将其删除。
相反,我想将特性分支推送到github上,以便在同行评审后合并它。
所以问题是,我如何“撤消”此命令。换句话说,我如何将我的最后两个提交从develop分支移动到我的功能分支?
我正在学习git-flow,刚刚执行了git flow feature finish <feature-name>
命令,这将我的功能分支合并到develop分支并将其删除。
相反,我想将特性分支推送到github上,以便在同行评审后合并它。
所以问题是,我如何“撤消”此命令。换句话说,我如何将我的最后两个提交从develop分支移动到我的功能分支?
这些步骤应该能解决问题:
获取所需的sha:
git log
<sha1>
是合并之前的最后一次提交。
<sha2>
是你开始开发该功能之前 develop 分支上的最新一次提交。
git checkout develop
git checkout -b feature/<feature-name>
git reset <sha1> --hard
git checkout develop
git reset <sha2> --hard
将您的特性分支推送。
我发现最简单的方法是使用 返回原点,来更新主分支(我们称之为默认)。
git checkout -B master origin/master
或者等效的更新命令
git switch -C master origin/master
checkout -B 和 switch -C(或--force-create)如果已经存在,则都将分支移动到新位置。
更新 后来我考虑了一下,虽然它对我有用,但我还是有点想删除它,因为我怀疑它可能只适用于快进的情况,而不是常规合并。这也可能解释为什么 git reset --hard <SHA-from-reflog>
对我没有用,让我陷入了困惑的状态,即因为我“重置”了我的本地 master
而不是特性分支头。
git flow feature finish
,则可以在两个分支中使用git reset --hard HEAD^
,而不是使用提交的 sha 值,因为这些提交在两种情况下都是最新的。 - clemlatz