如何回退通过git pull合并到远程的GitHub Pull Request?
回退误操作的解决方案
由于你直接在目标分支执行git pull origin <source branch>并推送,本质是将源分支的所有提交线性追加到了目标分支,未生成合并提交。这种场景下不能使用git reset(会改写公共分支历史,影响其他协作者),推荐通过反向合并的方式撤销变更,步骤如下:
切换到目标分支并拉取最新远程内容:
git checkout <目标分支名> git pull origin <目标分支名>找到目标分支误操作前的提交哈希(即拉取源分支之前的最后一个提交),可通过
git log查看,记为<旧提交哈希>。基于该提交创建临时分支:git checkout -b temp-revert <旧提交哈希>使用
ours合并策略,将当前目标分支合并到临时分支——此操作会生成合并提交,但保留临时分支(误操作前状态)的内容:git merge -s ours <目标分支名>切换回目标分支,合并临时分支:
git checkout <目标分支名> git merge temp-revert将变更推送到远程仓库:
git push origin <目标分支名>
执行完成后,目标分支会回到误操作前的状态,且通过新增合并提交完成撤销,不会破坏公共分支的历史记录,对其他协作者更友好。
补充:若能明确源分支提交的范围,也可使用
git revert <起始提交哈希>..<结束提交哈希>批量撤销,但50+提交的场景下,反向合并的方式更高效。
内容的提问来源于stack exchange,提问作者Mansi Gupta
相关产品推荐
相关产品推荐

