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

    技术2023-05-24  92

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

    Update Type选项框Update Type选项选项介绍命令介绍使用场景举例说明总结 参考链接

    Update Type选项框

    Update Project

    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

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

    Rebase

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

    举例说明

    样例一

    目前有3个分支:

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

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

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

    开发情况:

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

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

    总结

    不同

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

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

    相同

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

    其他

    项目中经常使用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

    Processed: 0.010, SQL: 9