git rebase的使用

前置认知

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 永远用不崩:

  1. 远程已经推送过的分支,绝对不 rebase!会覆盖别人代码、团队冲突爆炸。
  2. main / dev 公共主干分支,绝对不 rebase!所有人共用,改崩全员出错。
  3. 多人一起开发的分支,不 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 撤销,零风险,放心用。

相关推荐
李剑一12 分钟前
前端转AI要了解的技术,其他人不用看。前端架构基础之:让Js的计算运行在GPU上
前端·aigc·ai编程
IT_陈寒13 分钟前
Python的列表拷贝坑得我原地打转
前端·人工智能·后端
恋猫de小郭19 分钟前
Dart 3.13 的到底改了什么?为什么很重要?有什么坑?
android·前端·flutter
风月说与山鬼34 分钟前
六、React事件
前端·javascript·react.js
岁岁种桃花儿36 分钟前
Vue核心语法第十四篇:列表过滤
前端·javascript·vue.js
晓得迷路了36 分钟前
栗子前端技术周刊第 143 期 - npm 攻击事件、Bun 1.4...
前端·javascript
YHHLAI36 分钟前
实战 Vibe Coding:用 AI 从零搭一个 React 待办清单
前端·人工智能·react.js
zzzzzz3103 小时前
别急着把动效组件搬进页面:从 react-bits 看 React 动效库该怎么评估
前端·react.js·开源
李姆斯10 小时前
为啥Agent在coding表现这么好,但是在别的领域就是差的不少?
前端·agent·ai编程
鱼与宇12 小时前
前端Web(html+css+js+vue3)
前端