Git之IDEA集成Git更新项目Update Type选项解释

Update Type选项框

  • Update Project
    IDEA2017右上角快捷键更新项目

Update Type选项

选项介绍

  • Merge(合并)

    采用合并的方式来更新代码,此时会产生一个commit,这也是一般常用的默认的操作,这个的好处是能够在log中看到所有的操作记录,但是对于代码洁癖来说,可能会无法接受

    结果等同于执行git pull(git fetch + git merge)

  • Rebase(重定)

    就是所有的本地commit都是默认放到远程的commit记录的顶部,log也只会有一条记录线,简洁,但是有时候排查问题会不方便。

    结果等同于执行git pull --rebase(git fetch + git rebase)

  • Brance Default

    每个分支都可以设置自己的update方式,可以在config中设置,这个是选择分支默认的方式。

    此选项用于选择应用分支的默认命令,default branch在.git/config配置文件中指定

命令介绍

  • 分支操作

    
        # 创建分支
        git checkout -b 新分支名字
    
        ## 等同于
        git branch 分支名    ### 创建分支
    
        git checkout 分支名  ### 切换到分支
    
        git branch          ### 查看当前分支信息
        
        ## 基于远程分支"origin"创建一个"mywork"分支
        git checkout -b mywork origin
    
    
        # 合并分支
        
        ## 切换到test分支
        git checkout test
    
        ## 提交到版本库
        git commit -m '备注信息'
    
        ## 将test分支合并到当前分支
        git merge test 
    
        git rebase test
    
        git merge --no-ff -m '备注信息' test ## 合并分支时加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,通过git log查看
    
        # 删除分支
    
        ## 删除test分支
        git branch -d test
       
    
    

使用场景

  • 工作原理图
    Merge与Rebase工作原理图

  • Merge

    合并另外一个分支的内容。例如当成员代码开发完成时,可以把该成员分支merge到主分支上,当然需要手动解决冲突,merge后,分支就不存在了,但是在Git的所有分支历史中还能看到分支信息

  • Rebase

    合并另外一个分支的内容,但是会把本分支的commits顶到最顶端。单独使用rebase,有调整当前分支上commits的功能(合并,丢弃,修改commites msg)

举例说明

  • 样例一

    目前有3个分支:

    1. master分支:线上环境使用的分支

    2. test分支:测试环境使用的分支

    3. my_feature:开发新功能的分支,也就是当前分支

    开发情况:

    1. 假设我在my_feature上开发了一段时间,之后另外的同事开发的功能正式上线到master分支,那么我可以在当前分支下rebase一下master分支,这样我的这个分支的commits相对于master还是处于最顶端的,也就是说rebase主要用来跟上游同步,同时把自己的修改顶到最上面

    2. 我在my_feature上开发了一段时间,想要放到testing分支上,那就切到testing,然后merge my_feature到当前testing分支,因为是个测试分支,commits的顺序无所谓,也就没必要用rebase

总结

  • 不同

    1. merge结果能够体现出时间线,但是rebase会打乱时间线

    2. rebase看起来简洁,但是merge看起来不简洁

  • 相同

    1. 最终结果都是把代码合并,具体怎么使用这两个命令看项目需要
  • 其他

    1. 项目中经常使用git pull来拉取代码,git pull相当于是git fetch + git merge;如果此时运行git pull -r,也就是git pull –rebase,相当于git fetch + git rebase

参考链接

  • Idea获取git仓库时更新类型update type 的选择

    https://icode.blog.csdn.net/article/details/95956109

  • Git分支merge和rebase的区别

    https://www.cnblogs.com/zhangsanfeng/p/9575184.html


版权声明:本文为weixin_42586723原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。