git rebase的使用

0 阅读4分钟

前置认知

Rebase 唯一作用:把我的代码,“插队”到最新代码的最前面。

普通 merge 会产生分叉、记录杂乱;rebase 会让代码记录是一条直线,干净无垃圾。

使用铁律(死记) :只在自己本地、没推送到远程的分支用!公共分支绝对不用!

场景一:每天开发必用——同步主干最新代码(最常用)

你的现状:你在自己的功能分支写代码,同事往主干 main 提交了新代码,你需要同步更新,避免后续合并爆炸冲突。

目标:把同事的最新代码更新到自己本地,且不产生垃圾合并记录。

# 步骤1:保存你当前所有修改,提交到本地
git add .
git commit -m "本地功能开发临时提交"

# 步骤2:切到主干,拉取同事最新代码
git checkout main
git pull

# 步骤3:切回自己的功能分支,执行rebase同步(核心命令)
git checkout 你的分支名
git rebase main

执行后效果:Git 自动把你的所有代码,放在最新主干代码之后,历史记录一条直线,非常干净。

操作中遇到冲突?固定救命流程

rebase 卡住、提示冲突,不用慌,全程固定三步:

# 1. 打开报错文件,手动改好冲突代码(保留正确代码,删掉冲突标记)
# 2. 保存文件,把修改加入缓存
git add .

# 3. 继续执行下一步变基
git rebase --continue

改错了、想放弃重来?直接终止

git rebase --abort

输入后直接回到操作前的状态,零风险。

场景二:上线前清理垃圾提交(必学!代码整洁必备)

你的现状:开发中频繁提交,比如“修复bug”“调试代码”“修改错别字”,一堆零碎提交,上线太难看,需要合并成一个干净的正式提交。

目标:把最近多次垃圾提交,合并成1次规范提交。

# 合并最近3次提交,数字3可按需修改
git rebase -i HEAD~3

输入命令后会弹出编辑页面,只需要改两个单词:

  • 第一个单词保留 pick(作为最终保留的提交)
  • 下面所有行全部改成 fixup(合并并删除多余提交备注)

改完直接保存退出,自动完成合并。

最终效果:原本3次杂乱提交,直接变成1次干净的正式提交,适合提测、上线。

场景三:日常拉代码替代git pull(彻底告别杂乱记录)

痛点:普通 git pull 拉代码,经常自动生成莫名其妙的合并记录,仓库历史乱七八糟。

解决方案:全程用这条命令替代 git pull

git pull --rebase

作用:先拉远程最新代码,再把你的本地代码拼接在后面,零合并垃圾记录,日常开发无脑用。

绝对不能做的3件事

只要避开这3点,rebase 永远用不崩:

  1. 远程已经推送过的分支,绝对不 rebase!会覆盖别人代码、团队冲突爆炸。
  2. main / dev 公共主干分支,绝对不 rebase!所有人共用,改崩全员出错。
  3. 多人一起开发的分支,不 rebase!只用于自己一个人开发的私有分支。

极简日常开发完整流程

这是一套可以直接复用的完整工作流,适配90%开发场景:

# 1. 每天上班第一件事:同步主干最新代码
git checkout main
git pull
git checkout 你的分支
git rebase main

# 2. 日常开发写完代码,临时提交
git add .
git commit -m "功能开发中"

# 3. 拉取远程更新,保持代码最新
git pull --rebase

# 4. 功能完成,上线前清理所有垃圾提交
git rebase -i HEAD~3

# 5. 正常推送分支即可
git push

终极速查命令表

# 同步主干最新代码(最常用)
git rebase main

# 整理最近N次提交
git rebase -i HEAD~3

# 冲突解决后继续执行
git rebase --continue

# 放弃本次所有rebase操作(撤销救命)
git rebase --abort

# 优雅拉取远程代码(替代git pull)
git pull --rebase

最后大白话总结

1、rebase 就是用来整理代码、同步代码的工具,让提交记录干干净净,没有任何垃圾分叉。

2、日常开发只需要记住:同步主干用 rebase main、清理提交用 rebase -i、拉代码用 git pull --rebase。

3、出问题直接 git rebase --abort 撤销,零风险,放心用。