这篇文章我们来讲一下git在idea上的使用,以及在实际开发过程中各个分支的使用及其具体的流程
目录
1.git在idea上的使用
1.1 idea上的git提交
1.2 idea上的分支切换
2.git在实际运用时的分支及其流程
2.1分支介绍
2.2具体流程
3.小结
1.git在idea上的使用
1.1 idea上的git提交
git大家都会使用,比如从远程拉取一个项目,git clone+ssh地址 一下,然后想把项目提交到远程仓库了,就走那一套git流程
但是,麻烦吗?有点麻烦。有没有简单点的方法?有
idea是一款强大的工具,它集成了一些小插件的功能,其中就包括git
如下图所示:这就是idea上集成的git功能区
下面介绍一下这三个按钮的作用:
1. 这个是拉项目用的,相当于git pull命令,就是最新化当前的项目(注意:拉取时一定要选择Rebase,不要选择Merge)
2.这个是提交到暂存区用的,相当于git commit -m"xxx"命令
注意:如果你的这个改动希望别人也看到,那你就commit这个文件,如果你这个改动不希望别看到,那就不要commit这个文件
3.这个按钮就是将暂存区的文件提交到远程仓库用的,相当于git push
1.2 idea上的分支切换
首先,我们来看一下git上的分支切换的地方:
接下来说一个比较难懂的东西。
情况如下:
假设,我现在有两个分支,一个master分支,一个dev分支,这两个分支里面都有一个yml文件,这个yml文件的内容是一样的,假设其中有一个数据为10087
现在我做如下操作:
现在,我在master分支下,将yml文件中的数据10087修改为10086,但是我不commit这个文件,然后我切换到dev分支下,此时你会发现,dev分支下的这个yml文件中的数据也变为10086了,不是原来的10087了
但是,如果我在master分支下修改后,commit了,然后再切换到dev分支下,这时dev分支下的yml文件中的数据依然为10087,不会变为10086
很神奇的一个现象
2.git在实际运用时的分支及其流程
下面聊一聊git在实际开发运行时的分支情况和开发流程
2.1分支介绍
- dev:开发环境;从feature去merge
- test:测试环境;从feature去merge
- pre/releace: 预生产环境;从master去merge,为了验证master代码
- master:生产环境;从feature去merge
- feature_xxx: 开发分支;增加小功能;创建的时候,从master拉取
- hotfix_xxx: bug修复分支;从master拉取
2.2具体流程
下面来看一下实际开发中的具体流程(如下图所示):
解释:
首先,我们一款产品,开发好了是放在master分支下的,也就是生产环境。然后,我们根据市场变化,需要增加或删除某些功能,即需要对这款产品进行修改时,我们从master中拉取项目,并且创建一个新的分支,命名为feature_xxx,然后我们在这个分支下进行修改。当我们需要多人开发时,我们就将这个分支合并到dev分支上,然后大家分模块进行开发,这样你修改后的代码就到开发环境了。当开发完成后,要进行测试,我们就需要从feature_xxx分支merge到test分支,在test分支下测试。OK,测试没问题了,测试通过了,这时我们需要从feature_xxx分支merge到master分支,然后再从master分支merge到pre分支,在预生产环境下进行测试,OK,测试没问题了,那么就把master分支里的内容发布,这样一款新产品就发布了。
如果在pre分支下测试出现问题了,那么就要在feature_xxx分支下继续进行修改,然后test,然后从master到pre,然后在发布。
如果产品发布了,突然出现了一个bug,这时就直接从master分支下拉取创建一个hotfix_xxx分支,然后在hotfix_xxx分支下进行修改,修改完成后再到pre,pre里没问题了,在从per到master,然后再发布。
问:为什么不直接从dev到test?
答:dev是合作开发的环境,里面集成了所有的,如果只要一个人有问题,那么test就不会通过,这样其他人也不能进行下一步了,会延误开发时期,所以就是从feature_xxx分支merge到test,然后再进行下一步。
注意:所有的特性分支都不允许push,能push的分支只有feature分支,这样做的目的是方便代码review,并且要知道merge也是需要审批的,即需要组长审批,审批通过了才能merge
3.小结
这篇文章的实操性和理论性都比较强,是属于那种不起眼,但是有时候需要用的东西,一般这种东西是最麻烦的。第一部分讲了idea中的git操作,有一说一,idea是yyds;第二部分讲了实际开发过程中的分支情况,这个目前自己写的话用不着,进公司了会用到的。
至于git的相关指令和其他内容,可以看我的其他文章