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 撤销,零风险,放心用。

相关推荐
子兮曰2 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋2 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁2 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95272 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大2 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师2 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学2 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端