如何安全将Git分支重置指向其他分支,避免误损坏master分支?
猜想操作正误判定
- 猜想一错误:
git branch -f hotfix-env执行完成后,本地hotfix-env分支指针已经直接指向当前master的最新提交,没有新增变更需要add、commit,这两步属于冗余无效操作,还可能引入意外的修改内容。 - 猜想二错误:
git reset --hard master执行完成后,hotfix-env的工作区、提交历史已经完全和master对齐,不存在未提交的变更,commit步骤无法执行;同时改写了hotfix-env的历史,直接推送会被远端拒绝,缺少强制推送参数。
步骤1(hotfix-env完全对齐master)正确操作
以下所有操作仅修改hotfix-env分支内容,不会改动master分支的任何记录,无损坏master的风险
- 切换到本地master分支,拉取远端最新的master代码,保证本地master是最新版本:
git checkout master && git pull origin master - 强制将本地hotfix-env分支的指针指向当前master最新提交,完全丢弃hotfix-env原有历史:
git branch -f hotfix-env master - 切换到hotfix-env分支,验证文件内容是否和master一致:
git checkout hotfix-env - 强制推送本地hotfix-env到远端,覆盖远端原有的hotfix-env内容:
git push -f origin hotfix-env
步骤10(实验完成后重置hotfix-env)正确操作
操作逻辑和步骤1完全一致,直接执行上述4步操作即可,已经复制到临时位置的代码变更不会受到影响。
注意事项
- 强制推送前务必确认分支名称正确,避免误操作覆盖其他环境分支
- 如果仓库对hotfix-env开启了分支保护,需要先临时解除强制推送限制,操作完成后再恢复规则
内容的提问来源于stack exchange,提问作者John Little
相关产品推荐
相关产品推荐

