多人協作 Git 操作規範指南
整理了一下之前為團隊制定的 Git 操作規範,在此記錄。
一. 按規定格式提交 commit message
使用 commitizen 等工具提交符合 Angular 規範的 commit message。
要求至少包含 header,即:<type>(<scope>): <subject>
。
二. git 分支管理策略
主分支 master
所有提供給使用者使用的正式版本,都在這個主分支上釋出。
開發用分支 dev
用於日常開發。如果想正式對外發布,就在 master 分支上,對 dev 分支進行『合併』(merge)。
臨時分支
新的臨時分支從 origin/master 拉取, 保證程式碼最新。使用完畢後,需要及時刪除。
臨時分支包括以下兩種:
功能分支
作用為開發某個特定功能,從 dev 分支上分出來,開發完成後需要再合入 dev 分支。
命名規範:feature-{功能名稱}-{姓名縮寫} ,如 feature-template-ljl
bug 修復分支
作用為修復某個線上 bug,從 master 分支上分出來,修復結束後再合入 dev 和 master 分支。
命名規範:hotfix-{功能名稱}-{姓名縮寫} ,如 hotfix-template-tj
注:bug 修復分支需要先merge origin master
以獲取最新修改。且該型別的分支只能被合併,不能主動合併除了 master 分支之外的分支,以避免誤帶上別的分支。
三. 臨時提交
當有臨時提交程式碼的需求但是 commit message 不知如何寫或者想合併多個 commit 時,使用以下兩種方式(具體用法自行 Google):
git rebase -i (pick、squash) git commit --amend
另,merge 程式碼時如想合併多個 commit,可使用git merge --squash
。
四. Pull Request
此處涉及 code review 策略,此處給出整體流程建議:在程式碼需要合併入 dev 和 master 分支時發起 PR,請求同事進行 review,確認無誤後合併入相應分支。
五. 推薦
以下內容推薦但不強制(當你明確瞭解這些操作可能造成什麼樣的後果以及能解決什麼問題時再考慮使用 ):
- 未推送過的分支使用 git rebase 代替 merge 合併 master 分支
- merge 時新增引數 --ff,以啟用 fast forward 方式
- pull 時新增引數 --rebase,使用 rebase 策略替代預設的 merge 策略