如何在Sourcetree中彻底删除develop分支中的merge commit
如何删除develop分支中的错误merge提交
你现在pull就自动重置回去的核心原因是:你仅完成了本地develop分支的重置,远端仓库的develop分支仍然保留着包含错误merge的提交记录,Git会判定本地版本落后于远端,因此提示你拉取更新,拉取后自然会把远端的错误merge提交又合并回本地。
操作步骤
前提注意
如果你的develop是团队多人使用的公共分支,操作前务必提前和所有协作成员同步,避免后续有人基于旧的错误提交推送,再次把错误merge带回来。
具体操作
- 先确认本地develop分支状态正确:执行
git log检查提交历史,确认已经不包含你要删除的merge提交,当前HEAD就是你想要回退到的目标commit。 - 强制推送本地分支覆盖远端版本:执行命令
git push origin develop --force注意:如果你的仓库设置了develop为受保护分支,强推会被系统拦截,需要先到仓库的「设置-分支保护规则」中临时关闭develop的保护,推送完成后再恢复即可。
- 推送完成后不需要从该commit新建其他分支再重命名为develop,此时本地和远端的develop都已经是正确的状态,后续pull不会再出现被自动重置回包含错误merge版本的问题。
团队其他成员同步方案
如果是多人协作场景,其他成员要同步修复后的develop分支,不要直接pull,执行以下命令即可:
git checkout develop git fetch origin git reset --hard origin/develop
内容的提问来源于stack exchange,提问作者Bomber
相关产品推荐
相关产品推荐

