[英]Revert a GitHub “squash and merge” into a regular merge commit
几天前,当我合并https://github.com/nodemcu/nodemcu-firmware/pull/1627(从dev
分支到master
分支的快照)时,我选择了“压缩并合并”,而不是常规的“合并提交” ”。 我不能简单地还原PR并从dev
创建新的PR,因为与此同时已经对dev
进行了提交。
是否有解决此问题的明智方法? 也许像https://stackoverflow.com/a/28497372/131929之类的东西?
尽管我完全同意@torek的回答,但他忽略了一些细节。 您确实可以在master
分支上还原提交。 有两种方法可以做到这一点:
git reset HEAD~1
。 仅当您在此期间未向master
分支提交其他任何东西并且必须使用git push -f
推送时,此方法才有效。 使用此命令将从历史记录中删除提交。 git revert REV
,其中REV
是提交的哈希值。 在这种情况下,将创建一个额外的提交,这将撤消提交的确切工作。 那么,将这项工作包含在新的pull请求中的最简单方法是首先检出您的确切工作: git checkout REV
。 然后,您可以创建一个新分支( git checkout -b NAME
),推送该分支并创建一个新的请求。
由于“压缩并合并”会根据您在pull请求中的提交在diff中进行一次新的常规(非合并)提交,因此您确实可以简单地还原该一次提交。 您只需要(重新)打开(新)拉取请求。
关于这个问题的所有答案绝对是可行的,但是最好的答案可能是git rebase -i
您将输入:
git rebase -i HASHOFSQUASH~1
IE浏览器:
git rebase -i 2fa05ad3c0e92103a137c57c388ac42b3d07f5ab~1
这会给你:
pick HASHBEFOREYOURS commit message 2
pick YOURHASH commit message 1
编辑壁球合并,然后保存文件并退出。 (esc:wq如果是vim)
然后,它将运行在整个基准库中,完成后,壁球提交将消失。 只需git push -f
将其推送为新的master分支即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.