分支介紹
- master - 主分支
所有提供給用戶使用的正式版本,都在這個主分支上發布
開發者在此分支 不可進行 push 操作
- dev - 開發分支
日常開發所使用的分支,開發者完成的階段性功能模塊將首先被合并到此分支
此分支亦是團隊內部測試、階段性工作驗證所使用的分支
開發者在此分支 不可進行 push 操作,只能通過 Pull Request 的方式將個人分支合并到此分支
開發過程中,要經常與此分支保持同步
- feature/xxx - 特性分支
用于某個功能模塊的開發,例如:張三創建了一個 feature/package-manager 分支負責開發包管理器模塊
當該功能模塊開發任務完成后,通過 Pull Request 的形式進行請求合并,管理員 Code Review 通過后,將該分支合并到 dev 分支;此后,該分支將被刪除
一旦完成開發,它們就會被合并進 dev 分支**(僅能通過 Pull Request 的方式)**,然后被刪除
此類分支由開發者個人管理和使用, 可以進行 push 操作
開發過程中,此類分支要經常與 dev 分支保持同步
- hotfix/xxx - 補丁分支
用于緊急修復 Bug 的分支,可以由 master 或 dev 分支創建
同 feature/xxx 分支一樣,一旦修復工作完成,它們就會被合并進 master 或 dev 分支 (僅能通過 Pull Request 的方式),然后就被刪除
工作流程
# 開發前克隆 dev 分支到本地
git clone -b dev url
第一步:新建分支
首先,每次開發新功能,都應該新建一個單獨的分支
# 獲取 dev 分支最新代碼
git checkout dev
git pull
# 新建一個特性分支
git branch feature/xxx
# 切換到該特性分支,進行開發
git checkout feature/xxx
第二部:提交分支
分支修改后,就可以提交了
# 提交代碼
git add .git commit -m "commit message"
# 例如
# git commit -m "feat: add login"# 推送代碼前,先保證分支代碼最新
# 切換并更新dev分支
git checkout dev
git pull --rebase# 切換到開發分支,合并dev分支代碼
git checkout feature/xxx
git rebase -i dev
# 如果有沖突再手動解決沖突# 開發過程中,將本地倉庫開發中的特性分支 push 到遠程倉庫(可選的)
git push -u origin feature/xxx
git push 的 -u 參數,表示將遠程倉庫 origin/feature/xxx 與 本地倉庫 feature/xxx 建立關聯,下一次執行 push 命令,可省略后面的遠程倉庫名和分支名,直接輸入 git push 即可
commit message規范
用于說明git commit的類別,只允許使用下面的標識。
feat:新功能(feature)。
fix:修復bug,可以是QA發現的BUG,也可以是研發自己發現的BUG。
docs:文檔(documentation)。
style:格式(不影響代碼運行的變動)。
refactor:重構(即不是新增功能,也不是修改bug的代碼變動)。
perf:優化相關,比如提升性能、體驗。
test:增加測試。
chore:構建過程或輔助工具的變動。
revert:回滾到上一個版本。
merge:代碼合并。
sync:同步主線或分支的Bug。
第三步:與 dev 主干同步
分支的開發過程中,要經常與 dev 主干保持同步
# 獲取 dev 分支最新代碼
git checkout dev
git pull# 切換回當前開發的特性分支
git checkout feature/xxx
# 合并 dev 分支到當前分支
git rebase dev
第四步:發出 Pull Request
完成當前特性分支的所有開發任務,進行最后一次 與 dev 主干同步 工作,并提交到遠程倉庫以后,就可以發出 Pull Request 到 dev 分支,然后請求管理員進行 Code Review ,確認可以合并到 dev 分支
# 最后進行一次步驟三的同步工作# 提交到遠程倉庫
git checkout feature/xxx
git push origin feature/xxx
# 在 GitHub 管理界面創建 Pull Request,等待管理員進行 Code Review
第五步:清理無用的分支
某個特性分支開發任務全部完成后,應刪除它
# 首先,切換回 dev 分支
git checkout dev# 先刪除遠程特性分支
git push origin -d feature/xxx# 再刪除本地特性分支
git branch -d feature/xxx