[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分支最新的代碼


#### 2. 建立本地feature分支
建立本地feature分支 feature-xxxx(xxxx一般為任務的名稱):`git checkout -b feature/xxxx`



完成上面步驟之后,IDEA的workspace 就切換到 feature-xxxx分支了,可以開始任務的代碼編寫。
#### 3. commit代碼
在feature分支下可以多次提交代碼,這個代碼commit提交是在開發者本地緩存的,并不會commit到遠程倉庫。
git命令:` git commit -m “有意義的描述”`,一般建議階段性工作完成commit一次,或者離開座位去做其他工作之前提交一次。
#### 4. push 到遠程倉庫
git命令:`git push --set-upstream origin feature/xxxx`

## 三、代碼 Merge Request
* feature分支功能開發完成之后,建立到 develop 的 Merge Request:在 gitlab 中點擊 "Create Merge Request",source 為 feature-xxxx,target 為 develop。
* Code Review:根據大家的 review 意見,追加 commit,或者修改原有 commit。
創建Merge Request

選擇要提交的分支以及要合并到哪個分支

填寫一些相關內容,并提交

等待確認人確認提交后,你的分支就會被合并到相應分支里。完成上面的步驟,代碼就合并到develop分支了,待develop分支代碼完成測試之后,**(future分支的功能代碼通過測試之后,刪掉該feature分支即可。)**,通過上面的同樣的步驟將develop分支合并到master分支。master分支作為生產代碼上線部署。
## 四、沖突的解決
feature分支代碼提交之后,與 develop 分支代碼進行合并,gitlab提示兩個分支的代碼有沖突。這說明多個開發者修改了同一個文件的同一塊代碼。
* 點擊Resolve conflict在線比對代碼,解決沖突。對于代碼沖突較少的情況,可以使用這種方法。
* 點擊Merge locally開發者自己在本地解決沖突,后續再提交上來。

* 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