git rebase 重建清爽的历史提交

前言

在进行代码评审时遇到分支上有多个commit信息,对于评审者来说是非常头疼的,因为太混乱了。遇到这样的情况,就需要让开发人员把commit压缩一下,简单来说就是将多个commit合并为一个,这样看起来就比较整洁了,那git rebase是如何做到的呢?

git rebase 作用

git rebase 命令有两个作用:

  1. 将当前分支的更改重新应用到目标分支上,即变基。
  2. 对当前分支的历史提交进行更改,这里称之为交互式变基。

变基

变基具体来说就是:如果你正在一个分支上工作,想要将这些更改合并到主分支master上,但是主分支上已经有了新的提交,此时使用 rebase 可以让当前分支的更改应用到最新的主分支上。如下图

交互式变基

交互式变基时,可以使用不同的命令来修改提交历史:

  • p, pick <提交> :使用提交
  • r, reword <提交> :使用提交,但修改提交说明
  • e, edit <提交> :使用提交,进入 shell 以便进行提交修补
  • s, squash <提交> :使用提交,但融合到前一个提交
  • f, fixup <提交> :类似于 "squash",但丢弃提交说明日志

commit压缩/合并操作

所以,上述"将多个commit合并为一个"就是通过交互式变基完成的。具体操作如下:

  • 执行 git rebase -i HEAD~n ,n为你想要合并的提交数量,例如我输入git rebase -i HEAD~6 ,会出现下图的交互页面。
  • 将下面5个pick改为squash并保存。
  • 执行git push -f

通过上面的3步就完成了commit合并/压缩。效果如下图:

总结

开发过程中,为了避免代码丢失或其他因素,一次功能的完成避免不了多次提交。写好提交不仅可以帮助开发人员理清代码的逻辑,而且,整洁的提交记录也可以提高评审效率。所以,尽可能在一个提交中完成一个完整的功能。

相关推荐
鶴哥只手遮天16 小时前
第 8 章 工作区与检出:unpack-trees 与并行 checkout
git
xing-xing18 小时前
git 相关命令总结
git
A-刘晨阳20 小时前
GitLab + ArgoCD 实现 Kubernetes GitOps 自动化部署
运维·人工智能·git·kubernetes·自动化·云计算·argocd
ControlRookie1 天前
SyncBridge:一个 CODESYS 工程与 AI 之间工程师级的同步工具
git·ai编程·codesys·工业软件·controlrookie
鬼手点金2 天前
opencode-性能优化建议
java·人工智能·git·自动化·nanogpt
网络毒刘2 天前
开源 Aider 工作流实战:Git 提交驱动的 AI 结对,与 Cursor 何时互补
git·ai编程·cursor·aider
HRTOS2 天前
HRTOS 4.0 将长期维护:为什么版本号不再频繁变化
经验分享·git·单片机·51单片机
驭渊的小故事3 天前
linux 基础命令 + git 仓库创建和配置命令
linux·git
行者-全栈开发3 天前
华为云码道 CodeArts 实测:让 AI 用 Rust 写一个 Git 仓库健康度体检台「仓衡」
git·rust·tauri·桌面应用·ai 编程·华为云码道·codearts 代码智能体
挖掘狂人5 天前
Git 从 0 到 1:用一个小项目走完 add / commit / reset / merge / rebase / push
git·后端·github