如何无冲突压缩批量提交?仅保留仓库当前状态
解决方案
不需要用变基处理中间提交(这正是导致冲突的根源),直接基于上一次快照提交生成新快照即可,步骤如下:
定位上一次快照提交
执行命令找到最近的snapshot X提交的哈希值:git log --oneline | grep snapshot | tail -1输出结果类似
abc123 snapshot X,其中abc123就是目标哈希,记为<snapshot-X-hash>。重置到快照提交(保留当前文件状态)
使用--soft参数重置,当前工作区和暂存区的文件不会被修改,仅HEAD指针回到snapshot X:git reset --soft <snapshot-X-hash>生成新的快照提交
直接提交当前文件状态作为snapshot X+1:git commit -m "snapshot X+1"强制推送覆盖远程历史
由于修改了本地提交历史,需要强制推送到远程仓库:git push -f origin master
说明
- 该方法完全跳过中间所有自动提交的变更记录,直接将当前最终文件状态合并为新快照,不会触发任何合并冲突。
- 因为你仅独自使用
master分支,强制推送不会影响其他协作者,属于安全操作。
内容的提问来源于stack exchange,提问作者ROODAY
相关产品推荐
相关产品推荐

