前置认知
Rebase 唯一作用:把我的代码,"插队"到最新代码的最前面。
普通 merge 会产生分叉、记录杂乱;rebase 会让代码记录是一条直线,干净无垃圾。
使用铁律(死记) :只在自己本地、没推送到远程的分支用!公共分支绝对不用!
场景一:每天开发必用------同步主干最新代码(最常用)
你的现状:你在自己的功能分支写代码,同事往主干 main 提交了新代码,你需要同步更新,避免后续合并爆炸冲突。
目标:把同事的最新代码更新到自己本地,且不产生垃圾合并记录。
csharp
# 步骤1:保存你当前所有修改,提交到本地
git add .
git commit -m "本地功能开发临时提交"
# 步骤2:切到主干,拉取同事最新代码
git checkout main
git pull
# 步骤3:切回自己的功能分支,执行rebase同步(核心命令)
git checkout 你的分支名
git rebase main
执行后效果:Git 自动把你的所有代码,放在最新主干代码之后,历史记录一条直线,非常干净。
操作中遇到冲突?固定救命流程
rebase 卡住、提示冲突,不用慌,全程固定三步:
csharp
# 1. 打开报错文件,手动改好冲突代码(保留正确代码,删掉冲突标记)
# 2. 保存文件,把修改加入缓存
git add .
# 3. 继续执行下一步变基
git rebase --continue
改错了、想放弃重来?直接终止
c
git rebase --abort
输入后直接回到操作前的状态,零风险。
场景二:上线前清理垃圾提交(必学!代码整洁必备)
你的现状:开发中频繁提交,比如"修复bug""调试代码""修改错别字",一堆零碎提交,上线太难看,需要合并成一个干净的正式提交。
目标:把最近多次垃圾提交,合并成1次规范提交。
bash
# 合并最近3次提交,数字3可按需修改
git rebase -i HEAD~3
输入命令后会弹出编辑页面,只需要改两个单词:
- 第一个单词保留 pick(作为最终保留的提交)
- 下面所有行全部改成 fixup(合并并删除多余提交备注)
改完直接保存退出,自动完成合并。
最终效果:原本3次杂乱提交,直接变成1次干净的正式提交,适合提测、上线。
场景三:日常拉代码替代git pull(彻底告别杂乱记录)
痛点:普通 git pull 拉代码,经常自动生成莫名其妙的合并记录,仓库历史乱七八糟。
解决方案:全程用这条命令替代 git pull
css
git pull --rebase
作用 :先拉远程最新代码,再把你的本地代码拼接在后面,零合并垃圾记录,日常开发无脑用。
绝对不能做的3件事
只要避开这3点,rebase 永远用不崩:
- 远程已经推送过的分支,绝对不 rebase!会覆盖别人代码、团队冲突爆炸。
- main / dev 公共主干分支,绝对不 rebase!所有人共用,改崩全员出错。
- 多人一起开发的分支,不 rebase!只用于自己一个人开发的私有分支。
极简日常开发完整流程
这是一套可以直接复用的完整工作流,适配90%开发场景:
csharp
# 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
终极速查命令表
bash
# 同步主干最新代码(最常用)
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 撤销,零风险,放心用。