基礎(chǔ)·Gitlab Flow 工作流程
很多公司都使用 Gitlab 來進行團隊的代碼管理。Gitlab 是一個基于 git 實現(xiàn)的在線代碼倉庫軟件蔚袍,一般用于在企業(yè)、學(xué)校等內(nèi)部網(wǎng)絡(luò)搭建一個類似 Github 的網(wǎng)站配名。在這上面進行多人協(xié)作開發(fā)就使用 Gitlab flow 工作流程啤咽,與 Github flow 有許多相似的地方。
一個典型的開發(fā)過程是這樣的(假設(shè)項目名稱為 a渠脉,程序員的名字叫 xyz):
「第 1 步」
在 Gitlab 上找到項目主倉庫宇整,假設(shè)為 fe / a,將其 fork 到自己的空間芋膘,變成 xyz / a鳞青,然后 clone 到本地進行開發(fā),命令為:
git clone git@git.yourcompanyname.com:xyz/a.git
( fork 到自己空間的倉庫可以隨意修改索赏,除非向項目主倉庫提交 MR 并合并盼玄,不然不會影響主倉庫)
「第 2 步」
新建分支,在該分支上進行新功能開發(fā)潜腻,命令為:
git branch feat-xxx
git checkout feat-xxx
「第 3 步」
開發(fā)自測結(jié)束后埃儿,將修改提交至本地倉庫, 命令為:
git add .
git commit -m “feat: 增加xxx新功能”
( Commit Message 的規(guī)范可以是:新增功能以「feat:」開頭融涣,修復(fù) bug 以「fix:」開頭童番,重構(gòu)以「refactor:」開頭)
「第 4 步」
檢查上游版本是否有改動,命令為:
git remote add upstream git@git.yourcompanyname.com:fe/a.git
git pull upstream master --rebase
(add upstream 是添加上游地址威鹿,即主倉庫地址剃斧,僅第一次需要;使用 --rebase 便不會產(chǎn)生 merge commit忽你,使 commit 干凈清爽)
——若存在代碼沖突幼东,則進入「第 a 步」,否則跳過該步科雳。
「第 a 步」
手動解決沖突后根蟹,執(zhí)行命令:
git add .
git rebase --continue
「第 5 步」
檢查 git log 無誤,將分支推送至 origin糟秘,命令為:
git push origin feat-xxx
完成后在 Gitlab 上向主倉庫發(fā)起 Merge Request(MR)简逮,請同事進行 code review。
——若同事對 MR 提出修改意見尿赚,則進入「第 b 步」散庶,否則跳過該步蕉堰。
「第 b 步」
按照修改意見修改后,執(zhí)行命令:
git add .
git commit --amend --no-edit
git pull upstream master --rebase
git push origin feat-xxx -f
(使用 --amend 將這次 commit 與上次 commit 合并悲龟,只留下一條 commit 記錄屋讶。如果要修改上一條的 message,則使用 git commit --amend -m “xxx”; push 的時候使用 -f 是因為修改了分支躲舌,需要強制合并)
「第 6 步」
MR 被通過后丑婿,在 Gitlab 上點擊 merge,代碼會被合并到主倉庫没卸。此時可刪除本地分支了,命令為:
git checkout master
git branch -D feat-xxx
git push origin :feat-xxx
「第 7 步」
更新本地代碼和 origin 代碼為最新秒旋,命令為:
git pull upstream master --rebase
git push origin master
再次開發(fā)則從「第 2 步」開始即可约计。