还原合并Git流

还原合并Git流,git,git-flow,Git,Git Flow,我正在使用SourceTree和Git流模式。现在我已经准备了一个版本供beta测试人员测试,所以我创建了一个新的release/v1.0.1分支。但是我忘了,我决定完成(合并到develope和master和tag)发行版,尽管我甚至还没有将发行版发送给我的测试人员。所以我想让发布分支再次打开,如果我的测试人员发现任何bug,我可以在发布分支中修复这些bug,然后当所有bug修复后,我可以完成发布 那么,如何使用SourceTree(或者使用git命令)轻松地恢复到拥有release/v1.0

我正在使用SourceTree和Git流模式。现在我已经准备了一个版本供beta测试人员测试,所以我创建了一个新的
release/v1.0.1
分支。但是我忘了,我决定完成(合并到
develope
master
和tag)发行版,尽管我甚至还没有将发行版发送给我的测试人员。所以我想让发布分支再次打开,如果我的测试人员发现任何bug,我可以在发布分支中修复这些bug,然后当所有bug修复后,我可以完成发布

那么,如何使用SourceTree(或者使用git命令)轻松地恢复到拥有
release/v1.0.1
分支时的状态呢

从SourceTree附加的屏幕转储:

编辑:好的,我在
develope
(HEAD~2)上执行了
git重置--hard HEAD~2
,因为我已经手动测试了签出。但现在,当我签出
master
并执行
git reflog
时,我觉得应该在头6上执行重置

Peters-MacBook-Pro:Remessage peterwarbo$ git reflog
f7663b1 HEAD@{0}: checkout: moving from develop to master
3d132da HEAD@{1}: reset: moving to HEAD~2
2f1c753 HEAD@{2}: checkout: moving from master to develop
f7663b1 HEAD@{3}: checkout: moving from develop to master
2f1c753 HEAD@{4}: merge release/v1.0.1: Merge made by the 'recursive' strategy.
4332fe4 HEAD@{5}: checkout: moving from master to develop
f7663b1 HEAD@{6}: merge release/v1.0.1: Merge made by the 'recursive' strategy.
fe323ef HEAD@{7}: checkout: moving from release/v1.0.1 to master
28a63ea HEAD@{8}: commit: Bumped version number to 1.0.1
但当我这样做时,我得到了这个“错误”:

编辑2:新图像以演示fuckup

编辑3:在user1615903的答案中发出git命令后,附加新图像以说明当前状态。为什么说发展落后?为什么即使我将master重置为初始提交(
fe323ef
),也会从
release/v1.0.1
合并到master


这很容易。您需要做的事情包括:

  • 将开发分支重置为合并前的提交

  • 将主分支重置为合并前的提交

  • 让发布分支再次指向正确的提交

  • 移除标签

  • 将固定提交推送到远程

因此,要执行步骤1和2:

git checkout develop
git reset --hard 4332fe4

git checkout master
git reset --hard <SHA of the commit the master was before the merge>
最后要删除标记:

git tag -d v1.0.1
有关在中撤消合并的详细信息

之后,如果更改已按下,则需要使用-f开关覆盖远程中的更改:

git push -f
要从远程删除标记,请执行以下操作:

git push --delete origin v1.0.1

所以基本上,您只需要删除master和develope中的最后一次提交,并再次将28a63ea设置为“release/v1.0.1”?我想是这样的吧?我还需要删除对
master
develope
进行的合并,标签也应该删除。基本上,我只想回到我创建
release/v1.0.1
分支并承诺增加版本号时的状态。
HEAD~6
(从HEAD返回6次提交)与
HEAD@{6}
(6 git操作之前)我尝试了您建议的操作,但现在似乎卡住了?请看我更新的问题。那么,你用头~2重置了吗?这意味着您将分支提示向后移动了两次提交,而现在您正试图将其再向后移动6次提交?请包括一张来自SourceTree的新图片,它确实有助于说明这一点。所以我吃了?我能解开它吗?(幸运的是,我在Bitbucket上镜像了我的存储库)我现在正在上传新图片。编辑了我的答案,使其指向commit SHA,而不是HEAD某物。别担心,在git中永久删除东西真的很难
git push -f
git push --delete origin v1.0.1