1.👉 切换到分支 featureA
git checkout featureA
此时你的工作区和 HEAD 都指向 featureA 的最新提交。
2.
git branch -f develop
👉 在本地把 develop 分支的指针 强制移动 到当前所在的提交(也就是 featureA 的 HEAD)。
-
-f的意思是「force」,即使develop原来已经存在,也会强制把它移到新的位置。 -
执行后,本地的
develop分支和featureA的最新提交一模一样(同一个 commit)。
3.
git push origin develop --force
👉 把本地的 develop 分支强制推送到远程(origin)。
-
默认情况下,如果远程
develop比你本地的develop落后,Git 会拒绝推送,避免历史丢失。 -
加上
--force就是告诉 Git:忽略历史差异,直接用本地的覆盖远程的。
执行完这一串命令后:
-
远程的
develop就完全等于featureA。 -
所有基于
featureA的功能分支,未来合并到develop时都不会出大问题,因为它们共享历史。
⚠️ 注意事项:
-
强推会让远程的
develop旧历史消失,其他协作者如果基于旧的develop在开发,可能需要强制 rebase 或重新拉分支。 -
所以一般会在操作前 先做备份:
这样你还保留一份远程旧的 develop_backup。
