[置顶] 【Git入门之十】Rebase操作
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12309627
Rebase,衍合?变基?唉,我也不知道要怎么翻译合适。。。变基怪怪的,我擦勒,你才变基呢。。。
1.Rebase提交
rebase命令允许你编辑你的提交历史,比如你可以把多个提交(commit)联合成一个,可以对它重新排序,跳掉某个提交或者编辑提交信息。这是非常有用的,当你要再推送到远程仓库之前要想重新编辑提交信息。以下举个例子把多个提交联合成一个。
- #做一些无聊的修改和提交
- $ echo "test_rebase1" > jackydata01
- $ git commit -a -m "test_rebase1"
- [master 128a2f5] test_rebase1
- 1 file changed, 1 insertion(+), 1 deletion(-)
- $ echo "test_rebase2" > jackydata01
- $ git commit -a -m "test_rebase2"
- [master 5ae88f5] test_rebase2
- 1 file changed, 1 insertion(+), 1 deletion(-)
- $ echo "test_rebase3" > jackydata01
- $ git commit -a -m "test_rebase3"
- [master 37be873] test_rebase3
- 1 file changed, 1 insertion(+), 1 deletion(-)
- $ echo "test_rebase4" > jackydata01
- $ git commit -a -m "test_rebase4"
- [master 7dff3e4] test_rebase4
- 1 file changed, 1 insertion(+), 1 deletion(-)
- $ echo "test_rebase5" > jackydata01
- $ git commit -a -m "test_rebase5"
- [master 897fa79] test_rebase5
- 1 file changed, 1 insertion(+), 1 deletion(-)
看一下log。
- $ git log --pretty=oneline
- 897fa79def2cf256b7f14d0ec0fcb67e8f61a814 test_rebase5
- 7dff3e4ad7416f0370b4579393a0c8a8fc02efbd test_rebase4
- 37be873b514afd9d8f6536cd893eadc3e32b4966 test_rebase3
- 5ae88f5a0454066d820f6c1687b6d01f59f39dbd test_rebase2
- 128a2f5cdb325bcbdb26b35741fad2a2fba49832 test_rebase1
- ...还有很多
利用《git rebase》把最后5个(如上)提交联合为1个。
- git rebase -i HEAD~5
这个时候会打开Vim,这款神器我就不多说了,爱的多,恨的也不少,在Ubuntu上用过,自己不熟练所以感觉效率不高。Vim的常用命令自己google吧。
2.Rebase分支
对多个分支进行rebase操作,rebase命令为一个分支的更改生成一个补丁,然后把这个补丁应用到另外一个分支上,那么最后的源代码和merge是一样的,使用这种方式进行分支的合并更为合理。
- #创建并跳转到分支br
- $ git branch br
- $ git checkout br
- Switched to branch 'br'
- #修改br分支中的Jackydata01
- $ echo "this wiil be rebase to master" >jackydata01
- #提交br分支中的修改
- $ git commit -a -m "rebase to master"
- [br 5c2a431] rebase to master
- 1 file changed, 1 insertion(+), 1 deletion(-)
- #跳转到master分支
- $ git checkout master
- Switched to branch 'master'
- Your branch is ahead of 'origin/master' by 1 commit.
- (use "git push" to publish your local commits)
- #使用rebase把br的改变应用到master
- $ git rebase br
- First, rewinding head to replay your work on top of it...
- Fast-forwarded master to br.
- #显示master中jackydata01的内容
- $ cat jackydata01
- this wiil be rebase to master
[置顶] 【Git入门之十】Rebase操作的更多相关文章
- [置顶] 【Git入门之十五】Github操作指南
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374633 最终篇,介绍一下Github网站的使用,主要是翻译为主,简化了 ...
- [置顶] 【Git入门之十四】Git GUI
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374495 文章都快写完了,Git GUI才浮出水面,很多人要骂我,这么方 ...
- 简单的git入门介绍及常用操作
集中式版本控制系统采用中央服务器上存储的所有文件和实现团队协作.但是CVCS主要缺点是中央服务器的单点故障,即故障.不幸的是,如果中央服务器宕机一小时,然后在该时段没有人可以合作.即使在最坏的情况下, ...
- Git入门——本地版本库操作
作为一个一直用SVN的家伙,深深地感到了自己在版本控制工具上的落伍.... 首先必须强调的是: Git与Github不是一回事. Git是目前世界上最先进的分布式版本控制系统,于2005年被linux ...
- [置顶]
Git学习总结(1)——Git使用详细教程
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- Inno Setup入门(十)——操作注册表 & 自启程序
http://379910987.blog.163.com/blog/static/3352379720110259414788/ 有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过 ...
- [置顶] JUnit入门教程(二)
一:介绍 接着上次的课程,今天我们学习JUnit4的新特性 assertThat()方法,这种方式和其余的assert方法比起来,更加接进英语. 二:分析API API中的例子: 参数 T Actua ...
- Inno Setup入门(十)——操作注册表
有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果.Inno Setup中通过[registry]段实现对注册表的操作. 本段说明: 参数列表: 参 ...
- Inno Setup入门(十)——操作注册表
有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果.Inno Setup中通过[registry]段实现对注册表的操作. 本段说明: 参数列表: 参 ...
随机推荐
- 源代码解读Cas实现单点登出(single sign out)功能实现原理--转
关于Cas实现单点登入(single sing on)功能的文章在网上介绍的比较多,想必大家多多少少都已经有所了解,在此就不再做具体介绍.如果不清楚的,那只能等我把single sign on这块整理 ...
- 《UNIX网络编程》之select IO
select 函数的原理 select 管理者 用select来管理多个IO 一旦其中的一个或者多个IO检测到我们所感兴趣的事件, select 函数返回,返回值为检测到的事件个数 然后,遍历事件,进 ...
- wpf异常:指定的 Visual 不是此 Visual 的上级问题处理解析
WPF在画线的时候,调用Control0.TransformToAncestor(Control1).Transform(new System.Windows.Point(0, 0))方法转换坐标的时 ...
- 05-XML遍历递归显示到TreeView上(XDocument类)
1.XML文件(x1.xml): <?xml version="1.0" encoding="utf-8" ?> <itcast> &l ...
- 使用HighCharts实现实时数据展示
在众多的工业控制系统领域常常会实时采集现场的温度.压力.扭矩等数据,这些数据对于监控人员进行现场态势感知.进行未来趋势预测具有重大指导价值.工程控制人员如果只是阅读海量的数据报表,对于现场整个态势的掌 ...
- 数据库、C#、Java生成唯一GUID 方法
GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值.GUID ...
- PL/SQL中的变量
1.标量: ag1: declare v_ename emp.ename%type;--自己称为单变量 begin select ename into v_ename from emp where e ...
- swift 重载 泛式 inout的使用
swift 重载 泛式 inout的使用 函数 func 关键字 -> 表示返回值信息等等 那我们接下来利用函数做几件事情 -a 比较两个数字的大小 -b 比较两个字符串 -c 既能比较字符串, ...
- 武汉科技大学ACM :1010: 零起点学算法103——一只小蜜蜂...
Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示. Input 输入数据的第一 ...
- class类名的管理
var a=document.querySelector(".div1"); a.classList.remove("div2");//减掉一个 a.class ...