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

  • 14
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git-2.23.0/win64/32/mac os 等 多个系统的安装包 , Git 2.23发行说明 ====================== 自v2.22起的更新 ------------------- 向后兼容性说明 *“format-patch”的“--base”选项计算了patch-id 不稳定方式的必备补丁,已更新为 以与“git patch-id --stable”兼容的方式进行计算。 *默认情况下,“git log”命令的行为就像--mailmap选项一样 得到了。 用户界面,工作流程和功能 *已经教授“git fast-export / import”对来处理提交 使用UTF-8以外的编码的日志消息更好。 *在最近的Git版本中,每个工作树的引用都暴露在外 refs / worktrees / / hierarchy,表示工作树名称 必须是有效的refname组件。代码现在清理名称 给予工作树,确保这些参考文件格式正确。 *“git merge”学习了“--quit”选项,可以清理正在进行中 合并,同时离开工作树和索引仍然一团糟。 *“git format-patch”学习配置以设置默认值 它的--notes = 选项。 *显示具有潜在拼写错误的args的代码 解释为commit-ish已得到改进。 *“git clone --recurse-submodules”学会了设置子模块 忽略超级项目gitlink中记录的提交对象名称 而是使用恰好位于最前端的提交 通过传递新的远程跟踪分支从一开始 “--remote-submodules”选项。 *模式“git diff / grep”用于提取功能和单词 Matlab的边界已扩展到覆盖Octave,更多 或更少的等价物。 *“git help git”很难发现(好吧,至少对某些人而言) 人)。 *模式“git diff / grep”用于提取功能和单词 Rust的边界已被添加。 *“git status”可以告诉非标准默认值 “ - [no-] ahead-behind”选项带有新的配置变量 status.aheadBehind。 *获取结果时会报告“git fetch”和“git pull” 非快进更新,让用户注意到异常情况。 这些命令学会了“--no-show-forced-updates”选项以禁用 这个安全功能。 *引入了两个新命令“git switch”和“git restore” 分裂“检查分支机构以推进其历史”和 “检查索引和/或树的路径 推进当前历史“脱离单一”git checkout“ 命令。 *“git branch --list”学会了总是将分离的HEAD输出为 无论如何,第一项(当HEAD分离时) 的语言环境。 *条件包含机制学习基于选择 HEAD目前所在的分支机构。 *“git rev-list --objects”学习了“--no-object-names”选项 压制用作分组提示的对象的路径 包装对象。 *一个新的tag.gpgSign配置变量将“git tag -a”变成 “git tag -s”。 *“git multi-pack-index”学习了expire和repack子命令。 *“git blame”学会了“忽略”历史上的承诺,其中 效果(以及它们的存在)被忽略了。 *“git cherry-pick / revert”学会了一个新的“--skip”动作。 *来自备用对象库的引用提示可用作 现在可达性计算的起点。 *“git status”输出中的额外空行已减少。 *存储库中的提交可以用多个来描述 现在提交图形文件,它允许提交图形文件 逐步更新。 *“git range-diff”输出已经过调整,以便于识别 显示补丁所显示的文件的哪一部分。 绩效,内部实施,发展支持等 *更新git rebase”的支持部分以删除应该的代码 不再使用。 *开发人员支持,以模拟测试中未满足的先决条件 确保测试时其余测试仍然成功 已跳过先决条件。 *“git update-server-info”学会了不用#重写文件 相同的内容。 *指定在运行时查找动态库的路径的方法 已经简化了。传递-R / path /到/ dir的旧默认值 替换为新的默认值以传递-Wl,-rpath,/ path / to / dir, 这是最近GCC的用途。那些需要建立的人 旧的GCC仍然可以使用“CC_LD_DYNPATH = -R” *准备在拓扑步行器中使用可达性指数 在一个范围(A..B)。 *一个专门针对有抱负的git-core的新教程 开发人员已被添加。 *自动检测如何告知HP-UX aCC动态链接使用的位置 来自运行时的库。 *“git mergetool”及其测试现在产生更少的子进程。 * Dev支持更新以帮助跟踪测试。 *使用MSVC构建的支持已更新。 *“git fetch”从一组遥控器中获取学会运行的 auto-gc只在最后一次。 *少数Windows构建补丁已经被上流。 *用于读取序列器机器使用的状态文件的代码 对于腐败或陈旧,“git status”已变得更加强大 州档案。 *已经优化了具有多种模式的“git for-each-ref”。 *了解了遍历内核存储库的tree-walk API 更多代码路径中的实例。 *当多步骤樱桃采摘或恢复中的一步被重置或 已提交,命令行提示脚本未能注意到 目前的状况,已得到改善。 *许多GIT_TEST_ *环境变量控制着各个方面 我们的测试是如何运行的,但有一些是“非空的是真的,空的 或者未设置是假“而其他人遵循通常”有一些 拼写真实的方法,如是,等等,以及拼写方法 虚假,不,不,等等。“惯例。 *调整dir-iterator API并将其应用于本地克隆 优化代码路径。 *我们一直在尝试c89之外的一些语言功能; 该 编码指南文件没有谈论它们,而是有 全面禁止他们。 *已引入测试助手以优化测试准备 存储库有很多简单的提交,还有一些测试 脚本已更新为使用它。
IDEA中,可以使用git pull命令来更新代码。git pull相当于是git fetch + git merge,它会从远程仓库拉取最新的代码并合并到本地分支中。如果想要使用git pull -r,也就是git pull --rebase命令,相当于git fetch + git rebase,它会将本地的提交应用到远程分支的最新提交之上。更新代码非常重要,如果不进行更新,别人有项目提交到服务器上,你的项目将无法提交上去。使用git解决冲突可能会比较麻烦,而且有时候不注意会冲掉别人写的代码。因此,在提交自己的项目之前,必须进行更新操作。在IDEA中,可以选择pull进行更新代码操作,然后将代码add到暂存区,最后才能真正提交到git仓库。 #### 引用[.reference_title] - *1* [GitIDEA集成Git更新项目Update Type选项解释](https://blog.csdn.net/weixin_42586723/article/details/107103461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [IDEAGit更新/提交/还原方法](https://blog.csdn.net/MZ199290/article/details/122648181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值