今天這篇文章探討的是 Git 的 pre-commit hook 系統,透過這種 pre-commit 的系統,能夠幫助開發者與本地開發時,先行進行一些處理,避免什麼問題都要丟到遠方的 CI/CD pipeline 去檢查。畢竟程式碼更新,觸發 CI/CD 流程,等待結果告知,這部分有時候都要花上數分鐘,往往就是檢查到一個格式錯誤,譬如拼字錯誤,多一個空白,格式錯誤等。
如果今天可以將一些常用的檢查給複製一份到本地端去執行,這樣開發者可以更快地找出錯誤,同時也可以節省很多等待的時間,因此本篇文章就要針對 git pre-commit hook 來介紹。
本篇文章要介紹的並不是直接使用 git 的 pre-commit hook,而是要使用 python 的套件 git pre-commit hook,其龐大的生態系可以幫助使用者輕鬆的使用常見的 yaml 格式來管理 git 本身的 pre-commit hook。舉例來說,可以於專案底下放置一個有下列內容的檔案
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
透過 python 的 pre-commit hook 系統,會將其中描述的四個功能 (trailing-whitespace....check-added-large-files)實際的程式碼給轉換並且安裝到 .git/hooks/pre-commit 底下。
同時透過這種框架,開發者也可以自行開發屬於自己的 pre-commit hook並整合到該 yaml 檔案之中。整個使用的方式非常簡單
1. 透過 python 的方式安裝 git pre-commit
2. 準備一個名為 .pre-commit-config.yaml 的檔案,並且描述你希望使用的 hook
3. 透過 pre-commit install 的方式將該 yaml 的內容轉換為真正 git 所使用的內容
4. 可以開始透過 git commit 來幫助你進行本地檢查囉
如果對於提升本地開發效率有興趣的人,不要錯過研究看看 git pre-commit 這種機制,不論是直接撰寫 git 或是透過這種 python 的 git pre-commit 框架,只要能夠幫忙解決相關問題,提升效率就會是一個值得研究的方法。
更多的 hook 參考以及該框架介紹,請點選下列全文來觀賞囉
https://towardsdatascience.com/pre-commit-hooks-you-must-know-ff247f5feb7e
「git hook」的推薦目錄:
- 關於git hook 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於git hook 在 Kewang 的資訊進化論 Facebook 的最讚貼文
- 關於git hook 在 Kewang 的資訊進化論 Facebook 的精選貼文
- 關於git hook 在 Some out-of-the-box hooks for pre-commit - GitHub 的評價
- 關於git hook 在 Git Hooks | vue-element-admin 的評價
- 關於git hook 在 How to Create a Git Hook to Push to Your Server and Github ... 的評價
- 關於git hook 在 How to add git hook to the remote repository? - Stack Overflow 的評價
git hook 在 Kewang 的資訊進化論 Facebook 的最讚貼文
https://hahow.in/cr/kewang-git
大家在使用 Git 的時候是不是會常常遇到下列這些問題呢?
1. 常常在 GitHub 上面看到有 SSH 跟 HTTPS 的連線方式,這兩種有哪裡不同?為什麼有時候需要輸入密碼,有時候又不用輸入密碼?
• SSH 是使用金鑰的方式做連線,只要你有這把金鑰就可以不用輸入密碼,而 HTTPS 則是每次都要輸入密碼。更細部則可以控制權限,這在課程前半段就會解釋囉!
2. revert, reset, branch, checkout 這些指令到底是差在哪裡,如果我想還原某個檔案應該要如何做才好?
• revert 是還原單一個 commit,checkout 則是可以還原任何時間點的任何檔案,這些最容易被搞混的指令,當然要利用圖表好好來解釋一下。讓我們進入量子領域的世界吧!
3. 我想要在 push 的時候馬上就讓同事知道我這次修改的內容,我應該怎麼做才好?
• Git 有個 hook 的功能,可以在 push 之後即時寄送 mail 給想要收到的人,當然 Slack 跟 LINE 也可以囉!
以上這些種種問題,全部都會在課程內進一步的探討,讓大家在管理檔案的時候更有效率,不用怕檔案不見。快點來點上面的連結報名喔!
公開分享這篇文章,並且標記你的一位朋友,小編就會送你限量八折折扣碼,還不快點分享!
#git #github #hahow #量子領域
git hook 在 Kewang 的資訊進化論 Facebook 的精選貼文
有人猜测说可能是:“同事不写注释,不遵循驼峰命名,括号换行,最主要还天天 git push -f 等因素”激怒了这名行凶者。
---
coding style 真的很重要啦,空格跟 tab 就直接遵照 IDE 的設定就好。要不然就去 editorconfig.org 下載設定,大家都安裝一樣的 formatter 套件,然後 push 上去的時候加個 hook,沒通過 lint 的就 reject。
然後現在 GitHub 跟 GitLab 也都有禁止 git push -f 的設定了,所以也不怕程式碼被蓋掉。
「定義規範,救人一命」,這是萬古不變的準則啊!
#git #camelcase #editorconfig #lint
git hook 在 Git Hooks | vue-element-admin 的推薦與評價
Git Hooks. 具备基本工程素养的同学都会注重编码规范,而代码风格检查(Code Linting,简称Lint)是保障代码规范一致性的重要手段。 使用 Lint 会有什么好处呢? ... <看更多>
git hook 在 How to Create a Git Hook to Push to Your Server and Github ... 的推薦與評價
Git hooks are scripts that Git executes before or after commit, push, and receive. Setting up a Git hook makes your development and deployment easy. ... <看更多>
git hook 在 Some out-of-the-box hooks for pre-commit - GitHub 的推薦與評價
Specify what is "too large" with args: ['--maxkb=123'] (default=500kB). Limits checked files to those indicated as staged for addition by git. If git-lfs is ... ... <看更多>