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

如何在GitLab推送代码时仅保留自定义提交,避免异常合并提交?

解决Git推送后多余合并提交、保留自定义单个提交的方案

一、正确的推送流程(避免产生多余提交)

如果还未推送代码,按以下步骤操作可保证提交历史干净:

  • 暂存本地未提交的改动:git stash
  • 以rebase模式拉取远程最新代码(让提交历史线性,无多余合并记录):
    单次执行:git pull --rebase origin dev
    或配置默认pull用rebase(后续直接git pull即可):git config pull.rebase true
  • 恢复暂存的改动:git stash pop
  • 若出现冲突,手动解决后执行git add .,再运行git rebase --continue
  • 提交本地改动(使用自定义提交信息):git commit -m "你的自定义提交说明"
  • 推送到远程dev分支:git push origin dev

二、已推送多余合并提交的修正方法

若已经推送了多余的合并提交,想要将其与你的自定义提交合并为一个,需修改远程分支历史(注意:若有其他同事在该分支开发,需提前沟通):

  • 用git log查看提交历史,找到合并提交之前的远程提交哈希值(比如abc123)
  • 执行交互式变基:git rebase -i abc123
  • 在弹出的编辑界面中,将合并提交的前缀改为s(squash,保留提交信息)或f(fixup,丢弃提交信息),保存退出
  • 若出现冲突,解决后执行git add .,再运行git rebase --continue
  • 强制推送修正后的分支(用--force-with-lease更安全,避免覆盖他人改动):git push origin dev --force-with-lease

问题原因说明

你之前使用git config pull.rebase false(merge模式)拉取代码时,Git会自动生成一条合并提交,将远程改动与本地提交合并,这条自动生成的提交不会展示你的完整改动内容,还会让提交历史变得混乱。使用rebase模式拉取则会将你的本地提交“接”在远程最新提交之后,保持历史线性且无多余合并记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:37:37