前言

使用场景

主要功能是编辑git提交历史,所以建议在私有分支使用!

rebase使用方法

1. 开始变基

git rebase -i master (不一定对比分支,也可以对比某个提交点)

执行命令后出现提交历史:

pick 4daa490d 1
pick a996b550 ar
pick 2b43e8b1 2
pick 8e71f26f as
pick 37817519 3
pick 876680bd af
pick 8ddef852 4
pick 631d56b5 ad
pick 4814d62b 5
复制代码

2. 进行修改

往下拉会看见命令提示:

# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
复制代码

解释一下上面的命令:(完整提交 = 提交内容 + 提交日志)

pick:该提交保留
reword:提交内容不变,但是编辑提交日志
squash:提交内容和提交日志合并至上次提交(提交日志合并时可编辑)
fixup:提交内容合并至上次提交,提交日志不合并(删除提交日志)
drop:删除本次提交内容和提交日志
复制代码

单独说一下edit这个命令:

回滚至当次提交(未提交状态,保留提交内容)
然后你可以修改当次提交内容,可以添加或者拆分提交!(月光宝盒时光倒流功能)
修改完毕后执行:git rebase --continue
复制代码

3. 测试结果

假设修改设置如下:

pick 4daa490d 1
reword a996b550 ar
pick 2b43e8b1 2
squash 8e71f26f as
pick 37817519 3
fixup 876680bd af
pick 8ddef852 4
drop 631d56b5 ad
pick 4814d62b 5
复制代码

最终效果:

4daa490d 1
a996b550 ar reword
2b43e8b1 2 as squash
37817519 3
8ddef852 4
4814d62b 5
复制代码

备用方案

git merge --squash dev

--squash选项作用:合并后不自动提交,相当于用分支的文件覆盖当前主干的文件

优点:主干提交记录非常干净。

缺点:丢失分支提交记录。

后语

建议大家多实践测试,才能理解透彻该命令的使用方法!

推荐使用图形工具进行操作,方便又不容易出错!

转载于:https://juejin.im/post/5c8c549ee51d45257c2f7a28

git rebase 简介相关推荐

  1. git rebase简介(基本篇)

    原文: http://gitbook.liuhui998.com/4_2.html 一.基本 git rebase用于把一个分支的修改合并到当前分支. 假设你现在基于远程分支"origin& ...

  2. git rebase使用简介

    一.起因 上线构建的过程中扫了一眼代码变更,突然发现, commit 提交竟然多达 62 次.我们来看看都提交了什么东西: 这里我们先不说 git 提交规范,就单纯这么多次无用的 commit 就很让 ...

  3. Git rebase命令实战

    一.前言 一句话,git rebase 可以帮助项目中的提交历史干净整洁!!! 二.避免合并出现分叉现象 git merge操作 1.新建一个 develop 分支   2.在develop分支上新建 ...

  4. git rebase 和 git merger

    & git merge 在上图中,每一个绿框均代表一个commit.除了c1,每一个commit都有一条有向边指向它在当前branch当中的上一个commit. 图中的项目,在c2之后就开了另 ...

  5. 合并代码还在用git merge吗?我们都用git rebase!

    欢迎关注方志朋的博客,回复"666"获面试宝典 git merge 和 git rebase的区别 目的都是将一个分支的 commit 合并到到另外一个分支中去. git merg ...

  6. git merge 和 git rebase详解

    git merge 和 git rebase 都是用来合并两个分支的. git merge b   #把b分支合并到当前分支 git rebase b   #把b分支合并到当前分支 --------- ...

  7. 你什么时候使用git rebase而不是git merge?

    什么时候建议使用git rebase与git merge ? 成功改造后我还需要合并吗? #1楼 在合并/ rebase之前: A <- B <- C [master] ^\D <- ...

  8. git rebase用法

    开发任务分叉到两个不同分支,又各自提交了更新 整合分支最容易的方法是 merge 命令. 它会把两个分支的最新快照(C3 和 C4)以及二者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的 ...

  9. git rebase和git merge的用法

    http://softlab.sdut.edu.cn/blog/subaochen/2016/01/git-rebase%E5%92%8Cgit-merge%E7%9A%84%E7%94%A8%E6% ...

最新文章

  1. CentOS6 修改主机名的规范步骤
  2. div模拟textarea自适应高度
  3. C#进阶之路(一):委托
  4. 《数据库原理与应用》(第三版)第12章 函数和游标 基础 习题参考答案
  5. 12 种经典亿级流量架构之资源隔离思想与方法论
  6. GateSvr的设计2
  7. 【ASP.NET】HTTP中的 get 和 post 请求
  8. Thinkphp修改一句代码,使得foreach标签支持对象,增加变量[数组对象]混合解析法!...
  9. 某企业虚拟化平台时间同步异常排查
  10. CCF2014123集合竞价(C语言版)
  11. 软件测试行业的职业素养
  12. altium designer(AD13)隐藏敷铜的方法
  13. 计算机机房装修效果图,机房装修施工流程是什么? 机房装修效果图
  14. tweepy抓取Twitter数据
  15. 提取最后一个星号后的数字
  16. Python人脸识别项目-人脸检测
  17. 常见硬件面试题(含答案)盘点,硬件工程师学习笔记
  18. static关键字和块和包机制和继承super
  19. DBA到底要做什么?
  20. 基于C++实现的经典坦克大战游戏

热门文章

  1. 华为荣耀4X反复重启且无法进入recovery模式
  2. IP 数据库,CSV 和 MDB 格式。
  3. 计算机绘图 CAXA电子图板2009,CAXA电子图板
  4. 风险投资(VC)与私募股权投资(PE)的区别
  5. python计算召回率_机器学习之分类:精确率和召回率
  6. java怎么实现按键音_实例:使用Javascript制作声音按钮
  7. jackson-databind 版本升级遇到的问题
  8. 【QT】ComboBox下拉菜单背景透明设置
  9. 公众号代运营与自运营相比,优势体现在哪些方面?
  10. 排查https请求出现received fatal alert: internal_error的问题