[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分支提交代码的规则,这种情况通常不会出现。
- DevOps介绍
- 持续集成流程
- git工作流实践
- 新人准备git环境
- git工作流最佳实践
- jenkins基础入门
- jenkins简介
- jenkins安装(docker)
- 源码拉取
- maven构建
- 应用发布
- 结合gitlab版本管理
- jenkins-docker部署
- harbor镜像发布
- jenkins集成SonarQube
- SonarQube代码检测
- 集成SonarQube
- jenkins-pipeline
- 构建pipeline任务
- pipeline基础结构
- pipeline核心语法
- jenkinsfile构建
- 完整案例
- 整合钉钉发送通知
- 脚本使用凭证信息
- jenkins结合k8s使用
- k8s架构及基础概念
- k8s操作命令
- jenkins部署k8s
- 附录(其他未完成)
- jenkins高可用服务搭建
- gitlab-docker环境搭建
- 开发人员安装git
- JDK与maven
- docker安装gitlab
- docker安装
- docker-compose安装
- harbor安装
- SonarQube安装
- 2.暂时没写的内容
- 构建结果邮件发送
- 已有项目上传gitlab