原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12309627

Rebase,衍合?变基?唉,我也不知道要怎么翻译合适。。。变基怪怪的,我擦勒,你才变基呢。。。

1.Rebase提交

rebase命令允许你编辑你的提交历史,比如你可以把多个提交(commit)联合成一个,可以对它重新排序,跳掉某个提交或者编辑提交信息。这是非常有用的,当你要再推送到远程仓库之前要想重新编辑提交信息。以下举个例子把多个提交联合成一个。

[cpp] 
view plain
copy

 

  1. #做一些无聊的修改和提交
  2. $ echo "test_rebase1" > jackydata01
  3. $ git commit -a -m "test_rebase1"
  4. [master 128a2f5] test_rebase1
  5. 1 file changed, 1 insertion(+), 1 deletion(-)
  6. $ echo "test_rebase2" > jackydata01
  7. $ git commit -a -m "test_rebase2"
  8. [master 5ae88f5] test_rebase2
  9. 1 file changed, 1 insertion(+), 1 deletion(-)
  10. $ echo "test_rebase3" > jackydata01
  11. $ git commit -a -m "test_rebase3"
  12. [master 37be873] test_rebase3
  13. 1 file changed, 1 insertion(+), 1 deletion(-)
  14. $ echo "test_rebase4" > jackydata01
  15. $ git commit -a -m "test_rebase4"
  16. [master 7dff3e4] test_rebase4
  17. 1 file changed, 1 insertion(+), 1 deletion(-)
  18. $ echo "test_rebase5" > jackydata01
  19. $ git commit -a -m "test_rebase5"
  20. [master 897fa79] test_rebase5
  21. 1 file changed, 1 insertion(+), 1 deletion(-)

看一下log。

[cpp] 
view plain
copy

 

  1. $ git log --pretty=oneline
  2. 897fa79def2cf256b7f14d0ec0fcb67e8f61a814 test_rebase5
  3. 7dff3e4ad7416f0370b4579393a0c8a8fc02efbd test_rebase4
  4. 37be873b514afd9d8f6536cd893eadc3e32b4966 test_rebase3
  5. 5ae88f5a0454066d820f6c1687b6d01f59f39dbd test_rebase2
  6. 128a2f5cdb325bcbdb26b35741fad2a2fba49832 test_rebase1
  7. ...还有很多

利用《git rebase》把最后5个(如上)提交联合为1个。

[cpp] 
view plain
copy

 

  1. git rebase -i HEAD~5

这个时候会打开Vim,这款神器我就不多说了,爱的多,恨的也不少,在Ubuntu上用过,自己不熟练所以感觉效率不高。Vim的常用命令自己google吧。

2.Rebase分支

对多个分支进行rebase操作,rebase命令为一个分支的更改生成一个补丁,然后把这个补丁应用到另外一个分支上,那么最后的源代码和merge是一样的,使用这种方式进行分支的合并更为合理。

[cpp] 
view plain
copy

 

  1. #创建并跳转到分支br
  2. $ git branch br
  3. $ git checkout br
  4. Switched to branch 'br'
  5. #修改br分支中的Jackydata01
  6. $ echo "this wiil be rebase to master" >jackydata01
  7. #提交br分支中的修改
  8. $ git  commit -a -m "rebase to master"
  9. [br 5c2a431] rebase to master
  10. 1 file changed, 1 insertion(+), 1 deletion(-)
  11. #跳转到master分支
  12. $ git checkout master
  13. Switched to branch 'master'
  14. Your branch is ahead of 'origin/master' by 1 commit.
  15. (use "git push" to publish your local commits)
  16. #使用rebase把br的改变应用到master
  17. $ git rebase br
  18. First, rewinding head to replay your work on top of it...
  19. Fast-forwarded master to br.
  20. #显示master中jackydata01的内容
  21. $ cat jackydata01
  22. this wiil be rebase to master

[置顶] 【Git入门之十】Rebase操作的更多相关文章

  1. [置顶] 【Git入门之十五】Github操作指南

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374633 最终篇,介绍一下Github网站的使用,主要是翻译为主,简化了 ...

  2. [置顶] 【Git入门之十四】Git GUI

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374495 文章都快写完了,Git GUI才浮出水面,很多人要骂我,这么方 ...

  3. 简单的git入门介绍及常用操作

    集中式版本控制系统采用中央服务器上存储的所有文件和实现团队协作.但是CVCS主要缺点是中央服务器的单点故障,即故障.不幸的是,如果中央服务器宕机一小时,然后在该时段没有人可以合作.即使在最坏的情况下, ...

  4. Git入门——本地版本库操作

    作为一个一直用SVN的家伙,深深地感到了自己在版本控制工具上的落伍.... 首先必须强调的是: Git与Github不是一回事. Git是目前世界上最先进的分布式版本控制系统,于2005年被linux ...

  5. [置顶] Git学习总结(1)——Git使用详细教程

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  6. Inno Setup入门(十)——操作注册表 & 自启程序

    http://379910987.blog.163.com/blog/static/3352379720110259414788/ 有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过 ...

  7. [置顶] JUnit入门教程(二)

    一:介绍 接着上次的课程,今天我们学习JUnit4的新特性 assertThat()方法,这种方式和其余的assert方法比起来,更加接进英语. 二:分析API API中的例子: 参数 T Actua ...

  8. Inno Setup入门(十)——操作注册表

    有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果.Inno Setup中通过[registry]段实现对注册表的操作. 本段说明: 参数列表: 参 ...

  9. Inno Setup入门(十)——操作注册表

    有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果.Inno Setup中通过[registry]段实现对注册表的操作. 本段说明: 参数列表: 参 ...

随机推荐

  1. 【C++深入探索】Copy-and-swap idiom详解和实现安全自我赋值

    分类: C/C++2012-08-30 21:40 2017人阅读 评论(2) 收藏 举报 任何管理某资源的类比如智能指针需要遵循一个规则(The Rule of Three): 如果你需要显式地声明 ...

  2. Win7系统安装MySQL5.5.21图解教程

    转自:http://www.jb51.net/article/37310.htm 这篇文章主要介绍了如何在win7中安装mysql,所以加上了MySQL的下载过程,希望对需要的人有所帮助 大家都知道M ...

  3. [转] DAG算法在hadoop中的应用

    http://jiezhu2007.iteye.com/blog/2041422 大学里面数据结构里面有专门的一章图论,可惜当年没有认真学习,现在不得不再次捡 起来.真是少壮不努力,老大徒伤悲呀!什么 ...

  4. ANDROID内存优化(大汇总——中)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  5. Java基础知识强化98:Apache和Tomcat服务器的联系与区别

    1. Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置. Apache是w ...

  6. VB中的Dictionary对象

    VB中的Dictionary对象 Dictionary对象不是VBA或Visual Basic实时语言的具体存在的部分,它是存在于Microsoft Scripting Runtime Library ...

  7. linux的comm命令

    http://blog.csdn.net/apache6/article/details/5789669

  8. jQuery三种事件绑定方式.bind(),.live(),.delegate()

    .bind(), .live(), 和 .delegate()之间的区别并不明显.但是理解它们的不同之处有助于写出更简洁的代码,并防止我们的交互程序中出现没有预料到的bug. 基础 DOM树 首先,图 ...

  9. ORACLE安装过程中检查步骤出现的错误和解决方法【转】

    Checking operating system requirements ...Expected result: One of redhat-3,redhat-4,SuSE-9,asianux-1 ...

  10. xcode 删除 Provisioning Profile

    provisioning profile path: ~/Library/MobileDevice/Provisioning Profiles 打开并日期排序,删除老的 provisioning pr ...