【Git入门之十】Rebase操作

原创 2013年10月05日 14:18:01

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


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


1.Rebase提交

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

  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.   
  7. $ echo "test_rebase2" > jackydata01  
  8. $ git commit -a -m "test_rebase2"  
  9. [master 5ae88f5] test_rebase2  
  10.  1 file changed, 1 insertion(+), 1 deletion(-)  
  11.   
  12. $ echo "test_rebase3" > jackydata01  
  13. $ git commit -a -m "test_rebase3"  
  14. [master 37be873] test_rebase3  
  15.  1 file changed, 1 insertion(+), 1 deletion(-)  
  16.   
  17. $ echo "test_rebase4" > jackydata01  
  18. $ git commit -a -m "test_rebase4"  
  19. [master 7dff3e4] test_rebase4  
  20.  1 file changed, 1 insertion(+), 1 deletion(-)  
  21.   
  22. $ echo "test_rebase5" > jackydata01  
  23. $ git commit -a -m "test_rebase5"  
  24. [master 897fa79] test_rebase5  
  25.  1 file changed, 1 insertion(+), 1 deletion(-)  
看一下log。

  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个。

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



2.Rebase分支

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

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

相关文章推荐

git和svn比较

1.GIT是分布式的,SVN不是: 这一点绝对是最最关键的重点,与原作者不同,我要特别强调的是这一点对身处大陆的码农们的重要性。为什么?因为人家老外下全套android源码要几个小时,而我们要十几二...

Git版本控制详解

注意:原文地址:http://www.ihref.com/read-16369.html 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中...

SVN和Git 介绍,区别,优缺点,适用范围总结

介绍 SVN SVN是Subversion的简称,是一个开放源代码的版本控制系统,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放...

(译)第三部分:什么是rebase?

内容提要 第一部分:commit hash是什么? 第二部分:merge是什么? 第三部分:rebase是什么? 在第一部分中,我们讨论了什么是commit hash,其中一个很重要的特点就是comm...

【Git入门之十三】Ubuntu和git

之前我们都是在Windows平台下操作git。现在我们改用Ubuntu试一试吧!先准备好Ubuntu或者Linux系统吧。这里采用13.04版本虚拟机环境 1.Ubuntu下使用git 打开终...

简单工厂(Simple Factory)模式的体会

最近在学习《JAVA与模式》这本书。老实说除了有点迷茫,不知所措以外,剩下的就是对总结模式的人的极度赞扬。做JSP开发也将近一年了,大大小小经历了5,6个项目,见了几个别人写的框架,有学校项目组的,有...

git和SVN的区别

1)GIT是分布式的,SVN不是: 这 是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并...

【Git入门之一】Git是神马?

1.Git是神马? 一个开源的分布式版本控制系统,可以有效的高速的控制管理各种从小到大的项目版本。他的作者就是大名鼎鼎的Linux系统创始人Linus。 2.分布式又是神马? 先看看集...

【Git入门之六】远程仓库

远程仓库是用来把Git仓库托管到互联网,本地网络或者本机中。 本文主要介绍在本机中创建远程仓库(Remote repositories)。 1.创建一个本地远程仓库 使用git clone ...

【Git入门之十五】Github操作指南

最终篇,介绍一下Github网站的使用,主要是翻译为主,简化了已介绍过的内容。 1.如何创建一个仓库? 1.1.点击New Repository。 1.2.填写仓库信息,点击Crea...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)