Git 操作:rebase 详解(命令行)

47 篇文章 0 订阅
28 篇文章 0 订阅

本文介绍命令行中的 Git rebase 命令行操作,另有姊妹篇- Git 操作:rebase 详解(Android Studio)
官网:https://git-scm.com/docs/git-rebase


初始 temp 分支节点状态:

* c6d18af - (HEAD -> temp) d (2 分钟前)
* d585e8c - c (3 分钟前)
* c48536f - b (4 分钟前)
* afa3558 - a (5 分钟前)
* 7cdf608 - init (6 分钟前)

rebase 当前分支

修改当前分支的节点记录。如:删除节点、合并节点、修改节点的顺序等。

git rebase -i 7cdf608

-i 后是要修改的节点之前的一个节点)

显示

pick 1c9941d a
pick da02660 b
pick 45131c5 c
pick 95d2fab d

删除节点

删除节点 d:

  • 点击 i 进入编辑,将 d 的 pick 改为 d
  • 点击 esc,退出编辑
  • 输入 :,进入命令模式,输入 wq

完成删除,当前节点状态:init-a-b-c。

合并节点

合并 b、c 节点

  • 点击 i 进入编辑,将 c 的 pick 改为 s
  • 点击 esc,退出编辑
  • 输入 :,进入命令模式,输入 wq
  • 进入 commit 信息编辑
  • 输入 :,进入命令模式,输入 q

完成合并,当前节点状态:init-a-b。

修改节点的顺序

调换 a、b 的顺序

  • 移动光标至 a 的一行,点击 dd,剪切 a 的一行
  • 移动光标至 b 行的下面,点击 p,粘贴 a 的一行
  • 点击 esc,退出编辑
  • 输入 :,进入命令模式,输入 wq

完成修改,当前节点状态:init-b-a。

rebase 当前分支和其他分支

git rebase [–onto <新基线>] [<上游>] [<分支>]

没有指定分支,则默认是当前分支。指定后,会先 checkout 到指定分支,再进行 rebase。

没有指定新基线,则默认是上游。

含义:

将[分支] reset 到新基线上,再把原分支多于上游的部分移植过来

例子

  1. 在 temp 分支,执行

    git rebase master

    相当于执行

    git rebase --onto master master temp

    将 temp reset 到 master 的节点,再把原 temp 多于 master 的更新内容移植过来。

  2. 在 temp 分支,执行

    git rebase --onto master temp temp2

    切到 temp2 分支,将 temp2 reset 到 master 的节点,再把原 temp2 多于 temp 的更新内容移植过来。

abort rebase

git rebase --abort

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值