更優雅的使用 Git

如何更優雅的使用 Git?javascript

寫好 commit message

Git 每次提交代碼,都要寫 Commit message,不然提交不了。咱們不光得寫 Commit message 並且還應該寫的清晰明瞭,說明本次提交的目的。html

$ git commit -m "提交信息"

在編輯器中寫commit messagejava

$ git commit

寫好 Commit message 好處多多:git

一、統一團隊Git commit 日誌風格github

二、方便往後 Reviewing Codeshell

三、幫助咱們寫好 Changelog npm

四、能很好的提高項目總體質量json

Commit 提交規範

業界比較推崇 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

commitzen 這個工具能夠幫助咱們寫出規範的 Commit message。

GitHub:https://github.com/commitizen...

img

使用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

gitmoji 和 commitzen的做用都是幫助咱們寫出規範的commit message,不過gitmoji有更好玩的 moji表情。( 用moji來表示type )

GitHub:https://github.com/carloscues...

安裝使用

# 安裝
$ npm i -g gitmoji-cli
# 使用
$ gitmoji -c

挑選個符合場景的moji 提交本次更改

img

使用Git hooks

與其餘版本控制系統同樣,當某些重要事件發生時,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] 領取驚喜

左手代碼右手磚,拋磚引玉

相關文章
相關標籤/搜索