You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

强制推送后如何重置分支至他人已合并提交并保留本地更改?

解决方案:重置分支并一次性合并后续更改

步骤1:备份当前分支(避免丢失更改)

先给当前分支做备份,防止操作失误:

git checkout feature-a
git branch feature-a-backup

步骤2:定位对方合并你分支时的历史状态

假设对方分支名为their-branch,先筛选出该分支的合并提交:

git log --merges --oneline their-branch

输出里会有类似abc123 Merge branch 'feature-a' into their-branch的记录,复制这个合并提交的哈希值(比如abc123)。

接着获取合并发生时,你的分支对应的最新提交ID:

git rev-parse abc123^2

这个命令返回的哈希值(记为def456),就是对方合并你分支时,你的分支的状态节点。

步骤3:重置分支到历史状态

将你的分支硬重置到上述历史提交:

git reset --hard def456

步骤4:一次性整合后续所有更改

用--squash参数把备份分支的所有更改合并到当前分支,所有差异会被整合为一个待提交的更改集合:

git merge --squash feature-a-backup

步骤5:提交并推送更新

将整合后的更改一次性提交:

git add .
git commit -m "整合合并后的所有后续更改"

由于之前有过强制推送操作,这里需要用安全强制推送更新远程分支:

git push --force-with-lease origin feature-a

注意:--force-with-lease比直接--force更安全,会检查远程分支是否有未同步的新提交,避免误覆盖他人更改。

完成后,你的分支会回到对方合并时的状态,同时包含所有后续更改的单个整合提交。当你的分支被合并后,对方分支已包含def456这个历史节点,后续只需合并主分支(或你的分支)的最新提交即可,无需处理复杂冲突。

内容的提问来源于stack exchange,提问作者Guildenstern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:14:59