關於Git Flow
工做流,我想已是老生常談的話題了,可是今天我不得不來重溫一下 Git Flow
工做流。當我看的代碼廠庫的時候,我已經開始懷疑人生。亂七八糟的分支,五花八門的提交信息,各類各樣的分支名稱,沒有 Develop
分支,沒有 Release
,也沒有 Hotfix
。所以我想我應該好好溫習一遍 Git Flow
工做流,來改善一下廠庫現狀。前端
其實 Git
不僅有 Git Flow Workflow
這一種工做流,還有 Fork Workflow
、Feature Branch Workflow
、Distributed Workflows
等。如今還有 Github Flow Workflow
和 Gitlab Flow Workflow
。git
Vincent Driessen 2010 年發佈出來的他本身的分支管理模型。我的以爲 Git Flow Workflow
應該是最經常使用的 Git
工做流了,更多的介紹你們能夠看看這個 Git Flow Workflow (看完這一篇感受就不用再往下面看我寫的這篇了,由於你已經重溫了,嘿嘿)。bash
master
develop
master
:主分支,這個你們應該不陌生。代碼庫應該有一個、且僅有一個主分支;提供用戶正式使用的版本,都在這個主分支上發佈。develop
:開發分支,平常使用的開發分支。從 master
分支上面分出來的,通常功能開發完成後合併到主分支,而且用主分支進行發佈。工具
# 建立 develop 分支 git checkout -b develop master # 切換到 master 分支 git checkout master # 對 develop 分支進行合併(使用 --no-ff 能夠在 git 歷史上清晰看見記錄) git merge --no-ff develop
feature
hotfix
release
feature
:功能分支。也就是你們作需求、功能的時候的分支。從 develop
分支上面分出來的,通常功能完成後合併到 develop
分支,而且刪除功能分支。命名方式通常爲 feature/*
或 feature-*
。# 建立 feature/x 功能分支 git checkout -b feature/x develop # 切換 develop 分支 git checkout develop # 開發完成後,將功能分支 feature/x 合併到 develop 分支(使用 --no-ff 能夠在 git 歷史上清晰看見記錄) git merge --no-ff feature/x # 合併完成刪除 feature/x 功能分支 git branch -d feature/x
hotfix
:修補 bug
分支/補丁分支。bug
這種東西你們都不陌生,hotfix
就是用來修補正式發佈之後的 bug
的分支。從 master
分支上面分出來的,通常修復完成後合併到主分支以及開發分支,而且刪除補丁分支,用主分支進行發佈。命名方式通常爲 hotfix/*
或 hotfix-*
。post
# 建立 hotfix/x 補丁分支 git checkout -b hotfix/x master # 切換到 master 分支 git checkout master # 修復完成後,將 hotfix/x 補丁分支合併到 master 分支(使用 --no-ff 能夠在 git 歷史上清晰看見記錄) git merge --no-ff hotfix/x # 切換到 develop 分支 git checkout develop # 將 hotfix/x 補丁分支合併到 master 分支 git merge --no-ff hotfix/x # 對合並生成的新節點,作一個標籤(後面重溫 tag) git tag -a 1.1 # 合併完成刪除 hotfix/x 補丁分支 git branch -d hotfix/x
release
:預發佈分支。發佈正式版本以前(開發完成 develop
分支合併到 master
分支以前),可能須要有一個預發佈的版本進行測試。從 develop
分支上面分出來的,預發佈結束之後,必須合併進 develop
和 master
分支。命名方式通常爲 release/*
或 release-*
。測試
# 建立 release/x 補丁分支 git checkout -b release/x develop # 確認沒問題後,切換到 master 分支 git checkout master # 修復完成後,將 release/x 補丁分支合併到 master 分支(使用 --no-ff 能夠在 git 歷史上清晰看見記錄) git merge --no-ff release/x # 切換到 develop 分支 git checkout develop # 將 hotfix/x 補丁分支合併到 master 分支 git merge --no-ff release/x # 對合並生成的新節點,作一個標籤(後面重溫 tag) git tag -a 1.2 # 合併完成刪除 release/x 功能分支 git branch -d release/x
tag
是 git
版本庫的一個標記,指向某個 commit
的指針。主要用於發佈版本的管理,一個版本發佈以後,咱們能夠爲 git
打上 v.1.0.1
、v.1.0.2
...這樣的標籤。版本代碼被打上 tag
後就會被封存起來,之後就能夠根據相應的 tag
找到對應的版本,防止版本代碼丟失。spa
# 打一個 tag git tag v1.0.1
我想你們看到這裏,不只把 Git Flow
重溫了一遍,一些基礎的 Git
命令也重溫了一遍。3d
這個其實也是須要你們注意的,寫好 Git
提交信息並不難,就看你們是否是想去養成這麼一個習慣。
格式:指針
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
Header
(必需):包括三個字段:type
(必需)、scope
(可選)和 subject
(必需)。code
type
:用於說明 commit 的類別,只容許使用下面7個標識。
feat
:新功能(feature)
fix
:修補bug
docs
:文檔(documentation)
style
: 格式(不影響代碼運行的變更)
refactor
:重構(即不是新增功能,也不是修改bug的代碼變更)
test
:增長測試
chore
:構建過程或輔助工具的變更
scope
:用於說明 commit
影響的範圍,好比數據層、控制層、視圖層等等,視項目不一樣而不一樣。
subject
:用於 commit
目的的簡短描述,不超過50個字符。
Body
(可選):對本次 commit 的詳細描述,能夠分紅多行。
示例:
More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. Further paragraphs come after blank lines. - Bullet points are okay, too - Use a hanging indent
注意:
Footer
(可選):
1. 若是當前代碼與上一個版本不兼容,則 Footer
部分以 BREAKING CHANGE
開頭,後面是對變更的描述、以及變更理由和遷移方法。
2. 若是當前 commit
針對某個 issue
,那麼能夠在 Footer
部分關閉這個 issue
。
3. 若是當前 commit 用於撤銷之前的 commit,則必須以revert:開頭,後面跟着被撤銷 Commit 的 Header。
狀況一(示例):
BREAKING CHANGE: isolate scope bindings definition has changed. To migrate the code follow the example below: Before: scope: { myAttr: 'attribute', } After: scope: { myAttr: '@', } The removed `inject` wasn't generaly useful for directives so there should be no code using it.
狀況二(示例):
Closes #234
狀況三(示例):
revert: feat(pencil): add 'graphiteWidth' option This reverts commit 667ecc1654a317a13331b17617d973392f415f02. # Body部分的格式是固定的,必須寫成This reverts commit <hash>.,其中的hash是被撤銷 commit 的 SHA 標識符。
公衆號:前端曰
公衆號ID:js-say
ps:是(yue)不是(ri)