ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 一、git、gitlab基础概念 ### git/gitlab/github * git是开发者使用的本地代码分支及与远程代码仓库交互的命令行工具。 * github、gitee、gitcode等是由代码托管商公司提供的互联网远程代码管理仓库。 * 考虑到github、gitee、gitcode部署在互联网,可能出现安全性的问题。通常开发团队会自己搭建gitlab私有代码仓库。 ### 分支概念 通常开发团队会维护三个代码分支: * master 分支:一般对应生产代码分支,发布到 master 即意味着上线。 * develop 分支:一般对应测试环境的代码分支,用于部署测试环境应用服务。 * feature 分支::通常开发一个新功能,完成一个bug修改,都需要建立一个feature分支。合并到develop分支后进行测试,合并到master分之后作为生产版本。 git 鼓励使用分支feature 工作。开始工作的第一件事就是建立feature 分支。开发者本地的 master 分支应该永远保持干净,只用来同步远程仓库的稳定代码,即远程仓库 master 分支的代码。 普通开发者通常不允许直接操作向develop与master分支的提交代码,这样做的好处是: * 保证测试团队环境以及生产环境代码的稳定性。 * 区分master分支(生产环境)、develop(测试环境) 分支更有利于后续区分环境的CI/CD。 ## 二、开发者常规步骤 #### 1. 拉取最新代码:git pull 从远程仓库拉取master分支最新的代码 ![](https://img.kancloud.cn/00/4f/004fa45d0b89eddf94161d09951e93c8_1063x405.png) ![](https://img.kancloud.cn/03/73/0373900d9081e4ebf4102d6006120e53_661x499.png) #### 2. 建立本地feature分支 建立本地feature分支 feature-xxxx(xxxx一般为任务的名称):`git checkout -b feature/xxxx` ![](https://img.kancloud.cn/21/37/2137372cf9ab8f89e1bf599b55b94c74_1048x361.png) ![](https://img.kancloud.cn/35/e6/35e6b71b1de323c1e8fdd2aa47aeeeec_248x194.png) ![](https://img.kancloud.cn/a3/40/a3404de97ed01ea55eeadca43905fa20_418x227.png) 完成上面步骤之后,IDEA的workspace 就切换到 feature-xxxx分支了,可以开始任务的代码编写。 #### 3. commit代码 在feature分支下可以多次提交代码,这个代码commit提交是在开发者本地缓存的,并不会commit到远程仓库。 git命令:` git commit -m “有意义的描述”`,一般建议阶段性工作完成commit一次,或者离开座位去做其他工作之前提交一次。 #### 4. push 到远程仓库 git命令:`git push --set-upstream origin feature/xxxx` ![](https://img.kancloud.cn/ca/15/ca1525c42839606d7d522536b5763181_1078x347.png) ## 三、代码 Merge Request * feature分支功能开发完成之后,建立到 develop 的 Merge Request:在 gitlab 中点击 "Create Merge Request",source 为 feature-xxxx,target 为 develop。 * Code Review:根据大家的 review 意见,追加 commit,或者修改原有 commit。 创建Merge Request ![](https://img.kancloud.cn/03/61/0361c76ac02a53db3a8facc3aa2f4a05_1200x539.png) 选择要提交的分支以及要合并到哪个分支 ![](https://img.kancloud.cn/67/fa/67fa2b2fa651b2b9c4216df858975fb0_1200x408.png) 填写一些相关内容,并提交 ![](https://img.kancloud.cn/d1/2e/d12e18f0a558727c6602be30202e6c05_1200x673.png) 等待确认人确认提交后,你的分支就会被合并到相应分支里。完成上面的步骤,代码就合并到develop分支了,待develop分支代码完成测试之后,**(future分支的功能代码通过测试之后,删掉该feature分支即可。)**,通过上面的同样的步骤将develop分支合并到master分支。master分支作为生产代码上线部署。 ## 四、冲突的解决 feature分支代码提交之后,与 develop 分支代码进行合并,gitlab提示两个分支的代码有冲突。这说明多个开发者修改了同一个文件的同一块代码。 * 点击Resolve conflict在线比对代码,解决冲突。对于代码冲突较少的情况,可以使用这种方法。 * 点击Merge locally开发者自己在本地解决冲突,后续再提交上来。 ![](https://img.kancloud.cn/58/82/58823dd38a3b1b641480e90eca26960f_652x103.png) * feature分支与develop 分支冲突的解决。 * `git pull origin develop` 拉取最新的develop分支代码 * `git checkout develop` 本地代码切换到develop分支代码 * `git merge --no-diff feature-xxxx` 解决冲突代码,建议使用IDEA图形界面,处理冲突文件更方便。 * `git push develop` * 与 master 分支代码有冲突,如果遵守开发人员不允许直接向master分支提交代码的规则,这种情况通常不会出现。