几天前,当我合并This article时,从dev
分支到master
分支,我选择"压缩并合并"而不是常规"合并提交"。我无法简单地还原PR并从dev
创建新的PR,因为在此期间已经提交dev
。
有没有明智的方法来解决这个问题?也许像https://github.com/nodemcu/nodemcu-firmware/pull/1627?
答案 0 :(得分:1)
虽然我完全同意@ torek的回答,但他遗漏了一些细节。您确实可以恢复master
分支上的提交。有两种方法可以做到这一点:
git reset HEAD~1
。这仅适用于您在此期间未向master
分支提交任何其他内容的情况,并且您必须使用git push -f
进行推送。使用此命令将从历史记录中删除提交。git revert REV
,其中REV
是提交的哈希值。在这种情况下,将创建一个额外的提交,撤消提交的确切工作。然后,在新拉取请求中完成此工作的最简单方法是首先查看您的确切工作:git checkout REV
。然后,您可以创建一个新分支(git checkout -b NAME
),推送此分支并创建一个新的拉取请求。
答案 1 :(得分:0)
由于“squash and merge”会根据您在pull请求中提交的提交从diff中进行新的常规(非合并)提交,因此您确实可以简单地还原一次提交。您只需要(重新)打开(新)拉取请求。
答案 2 :(得分:0)
这个问题的所有答案都是可行的,但最好的答案可能是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)
然后,它将通过rebase运行,当它完成时,壁球提交将会消失。只需git push -f
即可将其作为新的主分支。