如何更優雅的使用 Git?javascript
Git 每次提交代碼,都要寫 Commit message,不然提交不了。咱們不光得寫 Commit message 並且還應該寫的清晰明瞭,說明本次提交的目的。html
$ git commit -m "提交信息"
在編輯器中寫commit messagejava
$ git commit
寫好 Commit message 好處多多:git
一、統一團隊Git commit 日誌風格github
二、方便往後 Reviewing Codeshell
三、幫助咱們寫好 Changelog npm
四、能很好的提高項目總體質量json
業界比較推崇 Angular 的 commit 規範 http://suo.im/4rsYeebash
Commit message 包括三個部分:Header,Body 和 Footer。完整格式以下:編輯器
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
1) type
提交 commit 的類型,包括如下幾種
- feat: 新功能
- fix: 修復問題
- docs: 修改文檔
- style: 修改代碼格式,不影響代碼邏輯
- refactor: 重構代碼,理論上不影響現有功能
- perf: 提高性能
- test: 增長修改測試用例
- chore: 修改工具相關(包括但不限於文檔、代碼生成等)
2) scope
修改文件的範圍,好比:視圖層、控制層、docs、config, plugin
3) subject
- subject 是 commit 目的的簡短描述(用一句話清楚的描述此次提交作了什麼),不超過50個字符
4) body
- 補充 subject 添加詳細說明,能夠分紅多行,適當增長緣由、目的等相關因素,也可不寫
5 ) footer
- 當有非兼容修改(Breaking Change)時必須在這裏描述清楚
- 關閉issue或是連接到相關文檔,如 Closes #1, Closes #2, #3
commitzen 這個工具能夠幫助咱們寫出規範的 Commit message。
GitHub:https://github.com/commitizen...
使用npm 全局安裝
$ npm install -g commitizen
在項目中使用 angular 的 commit 規範
$ commitizen init cz-conventional-changelog --save-dev --save-exact
而後咱們就能夠愉快的使用 git cz 代替 git commit 命令了。固然咱們也可也將其加到npm script 中
"script": { "commit": "git cz" }
而後直接使用npm run commit
gitmoji 和 commitzen的做用都是幫助咱們寫出規範的commit message,不過gitmoji有更好玩的 moji表情。( 用moji來表示type )
GitHub:https://github.com/carloscues...
安裝使用
# 安裝 $ npm i -g gitmoji-cli # 使用 $ gitmoji -c
挑選個符合場景的moji 提交本次更改
與其餘版本控制系統同樣,當某些重要事件發生時,Git 能夠調用自定義腳本,Git 有不少鉤子能夠用來調用腳本自定義 Git。在 .git -> hooks 目錄下能夠看到示例。 例如:pre-commit就是在代碼提交以前作些事情。若是你打開了 hooks 目錄裏面的 *.sample
文件,你能夠看見裏面寫的shell腳本。可是我想用 Js 寫 hooks 咋辦?husky、pre-commit就能知足你。
如今咱們想實現一個提交代碼時使用 Eslint 進行代碼檢查的功能
先來看pre-commit
GitHub:https://github.com/observing/...
# 下載安裝 npm install --save-dev pre-commit
在package.json 中配置pre-commit
"scripts": { "lint": "eslint [options] [file|dir|glob]*", }, "pre-commit": [ "lint", ]
如今提交代碼試試
git commit -m 'Keep calm and commit'
再試試 husky
GitHub:https://github.com/typicode/h...
開始仍是下載,不過這兒咱們用的是 @next 版,使用方法與正式版略有不一樣。
npm install husky@next --save-dev
和 pre-commit 同樣,仍是在package.json中配置。可是處理pre-commit鉤子它還能夠作的更多。
// package.json { "scripts": { "lint": "eslint [options] [file|dir|glob]*", }, "husky": { "hooks": { "pre-commit": "npm lint", "pre-push": "..." } } }
本文介紹瞭如何規範的編寫Commit message,以及使用commentzen與gitmoji這兩個工具來幫助咱們寫出規範的Commit message。最後介紹了下Git hooks,並經過 husky 或是 pre-commit 與 Eslint結合使用來構建一個代碼檢測工做流。固然,你還能夠作的更多。
本文完
歡迎能夠關注個人公衆號,一塊兒玩耍。有技術乾貨也有扯淡亂談,關注回覆[888] 領取驚喜
左手代碼右手磚,拋磚引玉