如何回退已经合并的master代码?
在CodeUp(一个代码托管平台,类似于GitLab、GitHub等)上撤销已经合并到master分支的提交,你需要遵循以下基本步骤:
- 回滚 master 分支:
- 如果你想要撤销整个合并操作并恢复到合并前的状态,你可以执行一个反向合并(revert merge)。在Git中,这通常通过创建一个新的提交来实现,这个提交的内容与你要撤回的合并相反。
# 在本地master分支
git checkout master
git revert -m 1 <合并提交的SHA-1哈希值>
git push origin master
-m 1
参数告诉Git选择合并提交的第一个父提交作为基准,这样可以保持原有的分支历史记录清晰。
- 交互式重置或变基(Rebase):
- 如果你想更彻底地删除合并历史,使master分支看起来就像从未进行过那次合并,可以使用
git reset
或者git rebase
。但这将更改项目的历史,并需要通知团队成员更新他们的本地副本。
# 确保不在master分支上,创建一个新的临时分支
git checkout -b temp-rollback master
# 重置master到合并前的某个提交
git checkout master
git reset --hard <合并之前的提交SHA-1>
# 推送master分支的新版本,可能需要force push,因为历史被更改了
git push origin +master
# 清理临时分支
git branch -D temp-rollback
- 在协作环境中处理:
- 由于撤销合并操作会改变项目历史,这可能会对其他开发者的本地分支造成影响。因此,在执行之前,请确保沟通清楚,并考虑是否有更好的方式解决冲突或修复错误,而不是简单地撤销合并。
请注意,具体的命令和流程可能会根据所使用的代码托管服务的功能有所不同。请谨慎操作,尤其是涉及force push时,因为它会覆盖远程仓库的历史记录。在实际操作前,建议备份相关数据,并充分了解团队的Git工作流和政策。
我的远程master不允许 push
如果你的远程master
分支设置了保护,不允许直接push,那么在执行git revert
并尝试推送到远程时可能会遇到权限问题。在这种情况下,你需要按照以下步骤操作:
- 创建一个撤销合并的Pull Request:
- 在本地执行
git revert
操作生成新的提交。
git checkout master
git revert -m 1 <合并提交的SHA-1哈希值>
- 推送这个新的提交到一个新的分支:
git checkout -b revert-merge
git push origin revert-merge
- 在代码托管平台(如GitHub、GitLab)上创建Pull Request:
- 登录到你的代码托管服务,找到你刚才推送的
revert-merge
分支,并基于它创建一个新的Pull Request,目标分支为master
。
- 等待审查和合并:
- 等待项目维护者或者其他有权限的团队成员对你的Revert PR进行审查,确认无误后他们会将这个PR合并到
master
分支上。
这样可以确保即使远程master
分支受到保护,也能通过协作流程完成撤销合并的操作。同时,请务必与团队沟通这种操作的目的和影响,以确保符合团队工作流程。
欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。
Don’t reinvent the wheel, library code is there to help.
文章来源:刘俊涛的博客
若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)
标签:git,revert,代码,合并,push,master,回退,分支 From: https://www.cnblogs.com/lovebing/p/18090255