第六章:Rebase

Rebase变基

一、介绍

​ Rebase英文翻译变基,是用来把版本的提交日志进行合并整合,让我们看起来更加清晰的一种机制,简而言之就是修剪提交历史基线

file

​ 主要有以下三种应用场景

二、场景一:把本地同一分支上提交的多个版本整合成一条线

​ 程序员小林本地编写并提交了n个版本,这n个版本对小林来说是有用的,但对于他人来说是无意义的,所以我们没必要将这n个版本都跟整个分支一起推送到远程仓库,我们现在本地将这n个版本的提交记录合并成为一条然后再跟随整个分支一起推送到远程仓库,这个样子,大家都清晰了

=====================>步骤一:先在本地开发、提交3个版本<=====================

echo rebase_test111 > p2.txt
git add .
git commit -m "v1"

echo rebase_test222 > p3.txt
git add .
git commit -m "v2"

echo rebase_test333 > p4.txt
git add .
git commit -m "v3"

echo rebase_test444 > p5.txt
git add .
git commit -m "v4"

echo rebase_test555 > p6.txt
git add .
git commit -m "v5"

=====================>步骤2: 查看日志<=====================

linhaifeng01@appledeMacBook-Pro test % git log --pretty=format:'%h: %s'
497d5e0: v5
b48d849: v4
0290662: v3
9fffd4c: v2
c69d302: v1
linhaifeng01@appledeMacBook-Pro test % git log --graph --pretty=oneline --abbrev-commit
* 497d5e0 (HEAD -> master) v5
* b48d849 v4
* 0290662 v3
* 9fffd4c v2
* c69d302 v1
linhaifeng01@appledeMacBook-Pro test % 

=====================>步骤3<=====================

# (1):执行命令,进入Interact交互界面
linhaifeng01@appledeMacBook-Pro test % git rebase -i 9fffd4c

注意 git rebase -i [startPonit] [endPoint]
前开后闭 区间 这里的 [startPonit] 是指需要合并的commit的前一个commit (即当前示例中的 “4cb600e: feat: modify a”)。 因为, 三个commit肯定要基于上一个commit合并成了新的commit。
谨慎使用[endPoint] 省略, 即默认表示从起始commit一直到最后一个,但是一旦你填写了, 则表示 [endPoint]后面的commit全部不要了!

#  (2)终端会进入选择交互界面, 让你进行变基选择操作,如下图

file

file

file

file

查看最新合并情况

# 会发现原三个一样的提交现在合并成了一个新的commit
linhaifeng01@appledeMacBook-Pro test % git log --graph --pretty=oneline --abbrev-commit
* a806510 (HEAD -> master) v345
* 9fffd4c v2
* c69d302 v1

=====================>步骤4、将变基后的分支push到远程库<=====================

linhaifengdeMacBook-Pro:pro linhaifeng$ git branch
* dev
  master
linhaifengdeMacBook-Pro:pro linhaifeng$ git push origin dev

=====================>rebase其他用法<=====================

file

提炼:

git rebase -i 版本号 # 会将当前版本号开始往下一直到指定版本号的版本结束,这些记录合并成一条

git rebase -i HEAD~3  # 从当前记录开始找最近的3条记录进行合并

注意:尽量不要合并已经提交到远程仓库的记录,尽量合并本地的、从未提交到远程的记录,否则,远程的日志记录与本地不一致将会更乱

推荐阅读:https://blog.csdn.net/small_white_123/article/details/121563248

三、场景二:把多个分支变基成一条线

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 沪ICP备2022009235号 沪公网安备31011802005110号 青浦区尚茂路798弄 联系方式-13697081366