小團隊適用的git-workflow

主流程

gitworkflow

涉及分支

  • master分支:主幹分支,用於發佈到生成環境,master分支上的commit源自於release分支和hotfix分支的合併,每一個commit都應該有相應的tag。
  • develop分支:主開發分支,feature分支和release分支都是基於該分支進行,全部開發通過code review後都會應用到該分支。
  • feature分支:開發新功能使用的分支,它從develop分支切出,並最終將會合併到develop分支。feature分支的命名規範爲:feature-YYYYMMDD-特性(如下劃線分割),例:feature-20180701-xxx
  • release分支:發佈分支,當完成某個里程碑的開發時,須要發佈版本。這是從develop分支切出release分支,進行發佈。針對發佈後接收到的反饋,在該release分支進行bugfix,當該分支穩定時,分別合併到master和develop分支,以後刪除該release分支。release分支的命名規範爲:release-版本號,例:release-1.0.0
  • hotfix分支:針對線上版本進行bugfix,而後分別合併到master和develop分支,hotfix分支的命名規範爲:hotfix-bug, 例:hotfix-table_height_fix

Git flow流程

開發新分支

創建新分支 - feature分支git

git checkout develop // 切換到develop分支bash

git pull // 與遠程分支同步develop工具

git checkout -b feature-20180701-xxx// 創建新分支,進行開發gitlab

將新分支推到遠程post

git checkout develop // 切換到develop分支spa

git pull // 與遠程分支同步developcode

git checkout feature-20180701-xxxx // 切換到你的開發分支orm

git rebase develop // 基於最新的develop分支進行代碼合併,解決衝突開發

git push origin feature-20180701-xxx // 將你的分支推向遠程rem

pull request

去gitlab發起一個針對develop分支的pull request

需瞭解:

  • git rebase vs git merge ?
  • 代碼衝突如何解決 ?
  • 如何發起一個pull request?

發佈

創建release分支

git checkout develop // 切換到develop分支

git pull // 與遠程分支同步develop

git checkout -b release-1.0.0 // 創建release分支

git push origin release-1.0.0 // 推向遠程

基於Release分支進行bugfix

git checkout release-1.0.0 // 切換到release分支

git pull // 與遠程同步release

git checkout -b release-1.0.0_bugfix // 基於release分支創建bugfix分支,進行開發

git push origin release-1.0.0_bugfix // 推向遠程

pull request

去gitlab發起一個針對release分支的pull request

將release分支分別合併到master和develop,對master分支進行打tag

git branch -D release-1.0.0 // 刪除該release分支

線上bugfix

同上,hotfix是基於master的。

將hotfix分別合併到master和develop,對master分支進行打tag

其餘常見git操做

  • 將n個commit合成一個commit,git rebase -i HEAD~n
  • 將某個分支的某個commit放到另一個分支上,git cherry-pick commitID
  • 重命名commit,git commit --amend

工具

  • bash-git-promot - An informative and fancy bash prompt for Git users
  • source-tree - git client

Reference

相關文章
相關標籤/搜索