git 协作开发流程
首先了解git分支是什么
我理解的是好比造一架飞机需要多个零件,这些零件由不同的厂家生产,最后各个厂家的零件生产后汇总到一个仓库中,组装起来就可以成为一架飞机了。
而在git项目管理中master主分支相当于仓库,实现不同功能的分支相当于各个生成零件的厂家,最后所有的分支所完成的功能全部合并到一起,就成为一个完整的项目。当然,在合并过程中可能产生冲突,这就需要来解决冲突,后面会讲怎么解决冲突。
项目中git除了主分支master外,用户还可以创建自己的分支,然后在不同的分支实现不同的模块。
红色框内显示当前分支是在主分支上。
同步协作开发流程
1、 先把master主分支上的代码与远程仓库同步到最新版本。
直接从远程仓库pull下来
2、 创建并切换到工作分支,创建完成后会自动切换到该分支(这时候master/work分支的内容是相同的。)
3、 编写代码,这里举个例子:创建个文件test.html
4、 完成后,add commit到work分支
这时候更改的代码就会保存到work分支上。
5、 将主分支从远程仓库pull最新的版本下来。
6、 将工作分支合并到主分支
- 先切换到主分支master
- 选中要合并的分支work,点击merge
- 如果有冲突,则需要手动解决冲突
双击点开,左边是你本地的版本,中间Rsult是合并后形成的版本,右边是你要合并的版本(如果是服务合并到本地,那么左边是你本地的版本,右边是远程仓库上的版本;如果是从分支合并到主分支,那么左边是你主分支master的版本,右边是你分支上的代码)。
怎么看冲突在哪里
你会发现三个版本代码都不一样,点击左(右)边的箭头,会把左(右)边的代码修改到Result中。
这里我点了左边的箭头,左边冲突解决了,但有右边冲突还没解决,如果右边代码也是正确的,那么点击的箭头,它会把内容合并到Result中。
但这明显是错的,按Ctrl+z可以撤销操作,右边这个冲突我们不想合并,直接点击X,把冲突关闭,当所有冲突解决完后,点击Apply,这里Result栏就是我们解决冲突后的版本了。
如果还有冲突,它会提示你还有冲突没有解决。意思是左边还有冲突没有解决,这里选择NO,把冲突解决完再重新apply 。
当没有冲突时,它会提醒你已经解决所有冲突了。
7、 这时候所有在work分支上做得修改就会合并到主分支上。
8、 最后就可以push到远程仓库上了。
关于分支切换的两个注意点
1、 分支切换一定要先add/commit当前分支上的修改,然后如果在修改完代码后没有提交,就想切换,idea会提示是否进行smart checkou,如果你点击yes你就完完了,idea会把当代分支上的修改,保存到你要切换的另一个分支上。这样一样就乱套了。
2、 如果当前工作分支上有很多bug不想提交,那么你可以先隐藏当前工作分支上的修改,stash(隐藏),然后切换到另一个分支上,那么下次你又切换回工作分支的时候,你可以通过unstash把修改的代码重新显示出来。