久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

深入了解Git Hooks的使用

本篇文章給大家帶來了關于Git的相關知識,其中主要介紹了Hooks使用說明,Git除了版本控制,還有一些其他的高級功能,其中之一就是Git Hooks,明面意思就是鉤子,可以類比于鉤子函數,希望對大家有幫助。

深入了解Git Hooks的使用

推薦學習:《Git學習教程》

Git 除了版本控制,還有一些其他的高級功能,其中之一就是Git Hooks,明面意思就是鉤子,可以類比于鉤子函數。簡單說就是Hook會在做某些事情的前后被鉤子鉤走去一些額外事情,那么這些額外事情我們可以用作于檢查、測試和部署等操作。
在 Git 中有許多的事件(commit、push 等等),每個事件也是對應了有不同的鉤子的(如 commit 前,commit 后),那么我們就可以在這些鉤子這里配置一些自己需要執行的操作來實現各種各樣的需求。

Git Hooks 介紹

Git hooks 是 Git 在事件之前或之后執行的腳本, 用于控制 git 工作的流程。Git hooks 腳本對于我們提交code review 之前識別一些簡單的問題很有用。 我們在每次提交代碼時都會觸發這些 hooks,以自動指出代碼中的問題,例如缺少分號,尾隨空白和調試語句。通過在code review 之前指出這些問題,代碼審閱者可以專注于代碼結構和功能的更改,而不需要浪費時間來審查這些格式問題。
Git hooks 分為客戶端鉤子和服務端鉤子??蛻舳算^子由諸如提交和合并這樣的操作所調用,而服務器端鉤子作用于諸如接收被推送的提交這樣的聯網操作。
客戶端鉤子:pre-commit、prepare-commit-msg、commit-msg、post-commit等,主要用于控制客戶端 git 的提交和合并這樣的操作。
服務端鉤子:pre-receivepost-receiveupdate,主要在服務端接收提交對象時、推送到服務器之前調用。

  • pre-commit: Check the commit message for spelling errors.
  • pre-receive: Enforce project coding standards.
  • post-commit: Email/SMS team members of a new commit.
  • post-receive: Push the code to production.

Git hooks 如何工作

Git Hooks 就是在.git/hooks文件下,保存了一些 shell 腳本,然后在對應的鉤子中執行這些腳本就行了。比如下圖中,這是一個還沒有配置 Git Hooks 的倉庫,默認會有很.sample結尾的文件,這些都是示例文件
深入了解Git Hooks的使用
例如打開pre-commit.sample文件看一下其中的內容,意思是一個示例鉤子腳本,用于驗證將要提交的內容,由沒有參數的“git commit”調用,如果鉤子想要停止提交,那么它應該在發出適當的消息后以非零狀態退出。這個腳本默認是不生效的,如果要生效,把文件名改為pre-commit即可。pre-commit這個鉤子是在git commit命令執行之前觸發。
Git 支持的所有鉤子見下表(加粗的為常用鉤子):
深入了解Git Hooks的使用

自定義使用方法

1. 添加命名相同的腳本文件

任何正確命名的可執行腳本都可以正常使用 ,也可以用Ruby或Python,或其他腳本語言。如下我們編寫一個與prepare-commit-msg相同命名的python腳本即可,注意第一行改成了python解釋器的路徑。

#!/usr/bin/env python  import sys, os  commit_msg_filepath = sys.argv[1] with open(commit_msg_filepath, 'w') as f:     f.write("# Please include a useful commit message!")

此外,這里用sys.argv[1]而不是$1來獲取第一個參數。這個特性非常強大,因為你可以用任何你喜歡的語言來編寫Git鉤子。

2. 直接修改sample文件

使用shell 這里嘗試寫一個簡單的鉤子,安裝一個prepare-commit-msg鉤子。去掉腳本的.sample拓展名,在文件中加上下面這兩行:

#!/bin/sh echo "# Please include a useful commit message!" > $1

接下來你每次運行git commit時,你會看到默認的提交信息都被替換了。
內置的樣例腳本是非常有用的參考資料,因為每個鉤子傳入的參數都有非常詳細的說明(不同鉤子不一樣)。

3. 鏈接自定義文件

因為hook文件其實就是個腳本文件,我們可以寫一個腳本文件到項目被git管理的任意目錄里即可,只要在.git/hooks/里的默認腳本文件中,執行我們外部的這個文件即可。

  • 自定義腳本文件:項目根目錄/githooks/commit-msg-impl.py
#!/usr/bin/env python import sys, os, re from subprocess import check_output # 收集參數,第一個參數是commit的信息的文件 commit_msg_filepath = sys.argv[1] # 打開commit提交消息的文件,檢測消息是否以指定格式開頭的,不是則異常退出,終止這次commit消息的提交 with open(commit_msg_filepath, 'r') as f:     content = f.read()     if not content.startswith("xxxx"):         print "commit-msg: ERROR! The commit message must start with xxxx"         sys.exit(1)  - 默認hooks文件:.git/hooks/commit-msg #!/bin/bash GIT_ROOT="$(git rev-parse --show-toplevel)" FILE_NAME=$GIT_ROOT/githooks/commit-msg-impl.py if  [ -f "$FILE_NAME" ]; then     source $FILE_NAME fi

Husky 配置

從上面的介紹中,我們知道 Git Hook 保存在 .git 文件夾中,Git 是一個多人協作工具,那按理說 Git 倉庫中的所有文件都應該被跟蹤并且上傳至遠程倉庫的。但有個例外,.git文件夾不會,這就導致一個問題,我們在本地配置好 Git Hook 后,怎么分享給其他小伙伴兒呢?這時候,就輪到 Husky 出場了。
Husky 的原理是讓我們在項目根目錄中寫一個配置文件,然后在安裝 Husky的時候把配置文件和 Git Hook 關聯起來,這樣我們就能在團隊中使用 Git Hook 了。

第一步

使用 npm 初始化你的項目(如果項目已有 package.json,請跳至第二步)

npm init -y

第二步

安裝 Husky

// 注意 Node.js 版本要 >=10 npm install husky -D

第三步

書寫配置文件,4.2.5 版本的 Husky 共支持以下幾種格式的配置文件:

  • .huskyrc
  • .huskyrc.json
  • .huskyrc.yaml
  • .huskyrc.yml
  • .huskyrc.js
  • husky.config.js
    個人習慣,這里我采用的是.huskyrc,在其中書寫 json 格式的配置,如下:
{   "hooks": {     "pre-commit": "git restore -W -S dist examples/dist"   } }

是不是很簡單,我們來解讀一下這個配置文件。hooks這個對象中,key 就是鉤子名,而 value 就是需要執行的命令。上面這個配置的含義就是,在每次執行 git commit之前,都會把dist和examples/dit目錄下的修改回滾,即不想這個目錄的文件被上傳。
上面我們只寫了一條命令,如果想執行兩條命令怎么辦呢?比如我還想在git commit之前用 EsLint 檢查一下代碼質量,我們可以像下面這樣寫:

{   "hooks": {     "pre-commit": "git restore -W -S dist examples/dist && eslint ."   } }

是的,就是這么簡單。如果 EsLint 檢測不通過,那么git commit是會被阻止的,就不用擔心"垃圾代碼"被提交到線上倉庫了。

Husky 注意事項

Husky 讓我們可以很方便的配置 Git Hooks,同時,也提供了一些實用方便的小技巧以及一些我們需要注意的點

不支持的鉤子

Husky 不支持服務端 Git 的鉤子:

  • pre-receive
  • update
  • post-receive
    跳過所有鉤子
    有時你可能不想運行鉤子,那么可以像下面這樣跳過:
HUSKY_SKIP_HOOKS=1 git rebase ...

禁用自動安裝

如果你不想 Husky 為你自動安裝鉤子(比如 clone 了一個第三方的庫,想要自己開發時),可以這樣做:

HUSKY_SKIP_INSTALL=1 npm install

推薦學習:《Git教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
综合激情一区| 精品国产中文字幕第一页| 尤物网精品视频| 国产资源在线观看入口av| 国产精选一区| 久久国产精品免费一区二区三区| 黄色不卡一区| 国内精品福利| 亚洲一本视频| 欧美 日韩 国产一区二区在线视频| 久久久久久色| 蜜臀久久99精品久久久画质超高清| 九九99久久精品在免费线bt| 美女精品视频在线| 国产精品片aa在线观看| 欧美亚洲一区二区三区| 日韩高清一区| 国产极品嫩模在线观看91精品| 欧美一区不卡| 老司机免费视频一区二区| 欧美交a欧美精品喷水| 久久爱www成人| 精品99在线| 欧美成人精品三级网站| 久久精品电影| 亚洲一区欧美激情| 日本不卡视频一二三区| 日本一区二区三区中文字幕| 日韩一区二区三免费高清在线观看| 日本一区中文字幕| 国产精品一线天粉嫩av| 国内精品伊人| 久久久影院免费| 亚洲毛片视频| 精品国产一区二区三区av片| 成人精品天堂一区二区三区| 亚洲激精日韩激精欧美精品| 亚洲精品护士| 精品三级国产| 美女少妇全过程你懂的久久| 免费在线成人网| 国产亚洲欧美日韩精品一区二区三区| 国产精品久久久免费| 欧美gv在线| 欧美一区激情| 视频福利一区| 日韩成人精品一区二区三区| 日本精品影院| 国产精品免费精品自在线观看| 91精品蜜臀一区二区三区在线| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩av黄色在线| 韩日一区二区三区| 欧美国产日本| 亚洲欧洲美洲国产香蕉| 国产成人免费| 日韩一区二区三区精品视频第3页| 欧美一区=区三区| 亲子伦视频一区二区三区| 国产探花一区| 亚洲激情二区| 亚洲一级二级| 中文字幕人成乱码在线观看| 日韩激情啪啪| 99riav国产精品| 蜜臀久久精品| 欧美韩一区二区| 亚洲欧美日本国产| 日韩欧美三级| 国产 日韩 欧美 综合 一区| 日韩av一区二| 久久大逼视频| 日产精品一区二区| 国产精品久久久网站| 中文字幕免费一区二区| 天堂网在线观看国产精品| 精品99在线| 欧美国产另类| 久久精品99久久久| 欧美日韩1区2区3区| 亚洲毛片一区| 亚洲精品福利| 亚洲精品日本| 日本免费新一区视频| 男人操女人的视频在线观看欧美| 久久精品不卡| 亚洲高清av| 亚洲精品.com| 99精品电影| 国产99精品一区| 欧美日韩国产在线观看网站 | 欧美日韩国产一区精品一区| 国产成人精品一区二区免费看京| 国产精品视频首页| 国产日产一区| 久久免费视频66| 精品午夜久久| 精品九九久久| 日韩电影免费网站| 久久久天天操| 国产毛片久久| 日本色综合中文字幕| 久久国际精品| 国产v日韩v欧美v| 99成人超碰| 亚洲日韩中文字幕一区| 日韩精品视频网站| 精品一区二区三区视频在线播放 | 不卡av一区二区| 一区二区亚洲精品| 精品一区二区三区在线观看视频 | 国产亚洲一卡2卡3卡4卡新区| 亚洲专区视频| 热久久免费视频| 日本 国产 欧美色综合| 国产精品毛片在线看| 日韩天堂av| 亚洲免费影视| 日韩精品一级二级| 99国内精品| 国产毛片久久| 久久福利一区| 一区二区国产在线| 天堂va蜜桃一区二区三区| 丝袜美腿亚洲色图| 午夜一级久久| 免费观看日韩电影| 亚洲欧美久久精品| 欧美一级一区| 欧美日韩一区自拍| 国产精品毛片视频| 精品一区二区三区中文字幕在线| 老鸭窝一区二区久久精品| 精品视频久久| 精品三区视频| 成人免费网站www网站高清| 999久久久亚洲| 妖精视频成人观看www| 首页国产欧美日韩丝袜| 亚洲精品精选| 久久av综合| 色偷偷偷在线视频播放| 久久婷婷丁香| 亚洲激情婷婷| 欧美一级一区| 色婷婷综合网| 亚洲午夜精品久久久久久app| 99国产精品自拍| 中文字幕中文字幕精品| 亚洲97av| 精品亚洲a∨一区二区三区18| 三级小说欧洲区亚洲区| 亚洲激情精品| 日韩欧美在线精品| 精品国产网站| 中文精品在线| 国产日韩欧美一区二区三区在线观看| 久久精品免费看| 在线看片国产福利你懂的| 午夜视频精品| 国产欧美一区二区精品久久久| 精品国产一区二区三区性色av| 久久人人88| 天堂俺去俺来也www久久婷婷| 国产美女精品视频免费播放软件| 国产a久久精品一区二区三区| 亚洲精品97| 欧美亚洲人成在线| 中文在线а√在线8| 在线视频日韩| 国产精品1luya在线播放| 久久久久久久久丰满| 亚洲精品系列| 四虎成人av| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久国产乱子精品免费女| 久久精品二区三区| 久久精品99久久久| 激情视频一区二区三区| 色综合视频一区二区三区日韩 | 中文字幕视频精品一区二区三区| 国产精品巨作av| 婷婷丁香综合| 国产精品国码视频| 欧美另类专区| 久久一区欧美| 亚洲欧美日韩专区| 国语对白精品一区二区| 蜜桃伊人久久| 伊人久久视频| 91欧美极品| 亚洲欧美综合| 久久精品亚洲| 亚洲三级国产| 99久久99视频只有精品| 日韩精品视频在线看| 久久国产日本精品| 国产精品.xx视频.xxtv| 免费在线欧美视频| 日韩不卡在线|