• [置顶] 【Git入门之十】Rebase操作


    原创作品,转载请标明: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.   
    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。

     

     

    [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.   
    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  
  • 相关阅读:
    spark简单入门
    vim 树形目录插件NERDTree
    Windows下查看系统端口使用的命令
    网络爬虫爬取动态网页
    Java并查集链表实现
    基于mahout的海量数据关联规则挖掘
    高维特征降维方法-随机映射
    JVM(4)--垃圾回收算法
    Java高并发程序设计(六)--线程池(1)
    Java高并发程序设计(五)--ReentrantLock源码解析
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3353224.html
Copyright © 2020-2023  润新知