基礎(chǔ)·Gitlab Flow 工作流程
很多公司都使用 Gitlab 來進(jìn)行團(tuán)隊的代碼管理。Gitlab 是一個基于 git 實現(xiàn)的在線代碼倉庫軟件,一般用于在企業(yè)、學(xué)校等內(nèi)部網(wǎng)絡(luò)搭建一個類似 Github 的網(wǎng)站。在這上面進(jìn)行多人協(xié)作開發(fā)就使用 Gitlab flow 工作流程,與 Github flow 有許多相似的地方。
一個典型的開發(fā)過程是這樣的(假設(shè)項目名稱為 a,程序員的名字叫 xyz):
「第 1 步」
在 Gitlab 上找到項目主倉庫,假設(shè)為 fe / a,將其 fork 到自己的空間,變成 xyz / a,然后 clone 到本地進(jìn)行開發(fā),命令為:
git clone git@git.yourcompanyname.com:xyz/a.git
( fork 到自己空間的倉庫可以隨意修改,除非向項目主倉庫提交 MR 并合并,不然不會影響主倉庫)
「第 2 步」
新建分支,在該分支上進(jìn)行新功能開發(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 干凈清爽)
——若存在代碼沖突,則進(jìn)入「第 a 步」,否則跳過該步。
「第 a 步」
手動解決沖突后,執(zhí)行命令:
git add .
git rebase --continue
「第 5 步」
檢查 git log 無誤,將分支推送至 origin,命令為:
git push origin feat-xxx
完成后在 Gitlab 上向主倉庫發(fā)起 Merge Request(MR),請同事進(jìn)行 code review。
——若同事對 MR 提出修改意見,則進(jìn)入「第 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 是因為修改了分支,需要強(qiáng)制合并)
「第 6 步」
MR 被通過后,在 Gitlab 上點(diǎn)擊 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 步」開始即可。