git merge --abort
使用场景:如果两个分支 merge 时出现了冲突,临时打算取消 merge
git reset --hard head^
使用场景:如果仅仅是在本地完成了 merge 后想要撤回,可以直接将分支挪回 merge 之前的 commit
推送到远程仓库之后想要撤回
比如说,release 分支进行 QA 测试,测试通过之后会合并到 master 分支,准备进行预发布测试和上线
虽然此时你的仓库的代码都合并到了 master,但是由于服务 A 依赖于其他团队开发的服务 B,而且往往是在不同的仓库里的两个项目。负责服务 B 的小组突然发现在 QA 环境临时测试出来了一个大 bug,此时 pm 沟通了一下,评估了一下风险,决定今天取消上线,下周再上。
你的代码都合并到 master 分支了但是说不上线了,此时你是不能将不准备上线的代码留在 master 分支里的。因为如果你有其他需求在最近一两天也要上线,那也是要合并到 master 分支,如果那个需求要上线的话,master 分支会把你的那个不准备上线的功能的代码给带上线。这种情况是不能接受的!必须将本次 merge 的代码给撤回,无论是本地的还是远程的。
如果 push 到了远程仓库以后是不能在本地 reset 一下后再 push 的,因为那样会搞乱提交历史
比如此时的工作区代码如下:

master 的 log 如下:

本文详细介绍了如何在Git中撤销已合并的本地和远程分支操作。当遇到紧急情况需要撤回已合并到master分支的代码时,可以使用`git merge --abort`或`git reset --hard head^`命令。对于已推送到远程仓库的情况,不能直接在本地reset后push,因为这会破坏提交历史。正确的做法是通过`git revert HEAD`创建一个新的提交来回滚到合并前的状态,确保本地和远程的master分支都回退。此外,文章还讨论了在重新合并时可能遇到的问题及解决策略。
最低0.47元/天 解锁文章
6595

被折叠的 条评论
为什么被折叠?



