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 的选择
Git分支merge和rebase的区别