git rebase 简介
前言
使用场景
主要功能是编辑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 简介相关推荐
- git rebase简介(基本篇)
原文: http://gitbook.liuhui998.com/4_2.html 一.基本 git rebase用于把一个分支的修改合并到当前分支. 假设你现在基于远程分支"origin& ...
- git rebase使用简介
一.起因 上线构建的过程中扫了一眼代码变更,突然发现, commit 提交竟然多达 62 次.我们来看看都提交了什么东西: 这里我们先不说 git 提交规范,就单纯这么多次无用的 commit 就很让 ...
- Git rebase命令实战
一.前言 一句话,git rebase 可以帮助项目中的提交历史干净整洁!!! 二.避免合并出现分叉现象 git merge操作 1.新建一个 develop 分支 2.在develop分支上新建 ...
- git rebase 和 git merger
& git merge 在上图中,每一个绿框均代表一个commit.除了c1,每一个commit都有一条有向边指向它在当前branch当中的上一个commit. 图中的项目,在c2之后就开了另 ...
- 合并代码还在用git merge吗?我们都用git rebase!
欢迎关注方志朋的博客,回复"666"获面试宝典 git merge 和 git rebase的区别 目的都是将一个分支的 commit 合并到到另外一个分支中去. git merg ...
- git merge 和 git rebase详解
git merge 和 git rebase 都是用来合并两个分支的. git merge b #把b分支合并到当前分支 git rebase b #把b分支合并到当前分支 --------- ...
- 你什么时候使用git rebase而不是git merge?
什么时候建议使用git rebase与git merge ? 成功改造后我还需要合并吗? #1楼 在合并/ rebase之前: A <- B <- C [master] ^\D <- ...
- git rebase用法
开发任务分叉到两个不同分支,又各自提交了更新 整合分支最容易的方法是 merge 命令. 它会把两个分支的最新快照(C3 和 C4)以及二者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的 ...
- 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% ...
最新文章
- CentOS6 修改主机名的规范步骤
- div模拟textarea自适应高度
- C#进阶之路(一):委托
- 《数据库原理与应用》(第三版)第12章 函数和游标 基础 习题参考答案
- 12 种经典亿级流量架构之资源隔离思想与方法论
- GateSvr的设计2
- 【ASP.NET】HTTP中的 get 和 post 请求
- Thinkphp修改一句代码,使得foreach标签支持对象,增加变量[数组对象]混合解析法!...
- 某企业虚拟化平台时间同步异常排查
- CCF2014123集合竞价(C语言版)
- 软件测试行业的职业素养
- altium designer(AD13)隐藏敷铜的方法
- 计算机机房装修效果图,机房装修施工流程是什么? 机房装修效果图
- tweepy抓取Twitter数据
- 提取最后一个星号后的数字
- Python人脸识别项目-人脸检测
- 常见硬件面试题(含答案)盘点,硬件工程师学习笔记
- static关键字和块和包机制和继承super
- DBA到底要做什么?
- 基于C++实现的经典坦克大战游戏
热门文章
- 华为荣耀4X反复重启且无法进入recovery模式
- IP 数据库,CSV 和 MDB 格式。
- 计算机绘图 CAXA电子图板2009,CAXA电子图板
- 风险投资(VC)与私募股权投资(PE)的区别
- python计算召回率_机器学习之分类:精确率和召回率
- java怎么实现按键音_实例:使用Javascript制作声音按钮
- jackson-databind 版本升级遇到的问题
- 【QT】ComboBox下拉菜单背景透明设置
- 公众号代运营与自运营相比,优势体现在哪些方面?
- 排查https请求出现received fatal alert: internal_error的问题