Git Hooks
: Git๊ณผ ๊ด๋ จํ ํน์ ์ด๋ฒคํธ์ ์๋์ผ๋ก ์คํ๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ๋ ๊ธฐ๋ฅ
ํฌ๊ฒ Client-side Hooks, Server-side Hooks๋ก ๋๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ ํ ์ ์คํ ์์น๋ ๊ฐ๋ฐ์ ๋ก์ปฌ Git์ด๊ณ , ์์ ์ด๋ฒคํธ๋ก pre-commit, commit-msg, pre-push ๋ฑ์ด ์์ต๋๋ค.
์๋ฒ ํ ์ Git ์๋ฒ ์ธก ์ ์ฅ์์์ ์คํ๋๊ณ , ์์ ์ด๋ฒคํธ๋ก pre-receive, update, post-receive ๋ฑ์ด ์์ต๋๋ค.
์ด ๊ธ์์๋ ํด๋ผ์ด์ธํธ ํ ์ ๋ํด์ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
ํด๋ผ์ด์ธํธ ํ (Client-side Hooks)
ํ ์ด๋ฆ | ์คํ ์์ | ๋ํ ์ฌ์ฉ ์์ |
pre-commit | ์ปค๋ฐ ์ง์ | ์ฝ๋ ๋ฆฐํธ, ํ ์คํธ ์คํ, ํ์ผ ํฌ๋งท ๊ฒ์ฌ |
commit-msg | ์ปค๋ฐ ๋ฉ์์ง ์์ฑ ์งํ | ์ปค๋ฐ ๋ฉ์์ง ํฌ๋งท ๊ฒ์ฆ |
prepare-commit-msg | ์ปค๋ฐ ๋ฉ์์ง ์๋ํฐ ์ด๊ธฐ ์ | ์๋ ์ปค๋ฐ ๋ฉ์์ง ์์ฑ |
post-commit | ์ปค๋ฐ ์๋ฃ ํ | Slack ์๋ฆผ ์ ์ก, log ์์ฑ |
pre-push | ์๊ฒฉ ์ ์ฅ์ ํธ์ ์ง์ | ํ ์คํธ ์คํ, ์ปค๋ฐ ์ ์ ํ |
post-checkout | ๋ธ๋์น ๋ณ๊ฒฝ ํ | ํน์ ํ์ผ ์๋ ๋ณต์ฌ, ์ค์ ์ ์ฉ |
post-merge | ๋จธ์ง ์๋ฃ ํ | ์์กด์ฑ ์ค์น, ๋ง์ด๊ทธ๋ ์ด์ ์คํ |
Git Hooks ์ ์ฉํด๋ณด๊ธฐ
Git Hooks๋ .git/hooks ๋๋ ํ ๋ฆฌ ์์ ์ ์ฅํฉ๋๋ค. hook์ ์คํ๊ฐ๋ฅํ ์คํฌ๋ฆฝํธ์ด๋ฉฐ, ์ค์ ํ๊ณ ์ ํ๋ ํ ์ด๋ฆ์ ํ์ฅ์ ์์ด ํ์ผ๋ช ์ผ๋ก ์ง์ ํ๋ฉด Git Hooks๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. .git/hooks/pre-commit, .git/hooks/post-merge ์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ํ์ผ์ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
Git Hooks๋ฅผ ๊ณต์ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ : husky
Git Hooks๋ .git ๋๋ ํ ๋ฆฌ์ ์ ์ฅํฉ๋๋ค. ํ์ง๋ง .git ๋๋ ํ ๋ฆฌ๋ ๋ฒ์ ๊ด๋ฆฌ ๋์์ด ์๋๋ฏ๋ก ๋ ํฌ์งํ ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ Git ์ฒด๊ณ ํ์๋ Git Hooks๋ฅผ ๊ณต์ ํ ์ ์๋ค๋ ์๋ฏธ์ ๋๋ค.
husky๋ ํด๋ผ์ด์ธํธ ํ ์ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ๋ก, Git Hooks๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ Node.js ๊ธฐ๋ฐ์ ํจํค์ง์ ๋๋ค. npm, yarn, pnpm ์ค ํ๋๋ฅผ ์ด์ฉํด์ ์ค์น ๋ฐ ์คํ๋ฉ๋๋ค.
์๋์ ๋ฐฉ์์ฒ๋ผ pnpm์ผ๋ก ๊ด๋ฆฌ๋๋ ํ๋ก์ ํธ์ ์ ์ฉํด๋ดค์ต๋๋ค.
1. pnpm add --save-dev husky
2. pnpm exec husky init
3. ์ํ๋ ํ ํ์ผ ์์ฑ
commit-msg ํ ์ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ฑํ ํ์ ์ค์ ์ปค๋ฐ์ด ์ ์ฅ๋๊ธฐ ์ง์ ์ ์คํ๋ฉ๋๋ค. ์ด ํ ์ ์ปค๋ฐ ๋ฉ์์ง์ ํ์์ ์๋ ๊ฒ์ฆํ์ฌ ์ผ๊ด๋ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๊ฐ์ ํฉ๋๋ค.
pre-commit ํ ์ ์ปค๋ฐ ๋ช ๋ น์ด๊ฐ ์คํ๋๊ธฐ ์ง์ ์ ์คํ๋ฉ๋๋ค. ์ด ํ ์ ์ปค๋ฐ ์ ์ ์ฝ๋์ ๋ฌธ๋ฒ ์ค๋ฅ๋ ์คํ์ผ ์ค๋ฅ๊ฐ ์๋์ง ์๋ ํ์ธํด์ค๋๋ค. ์คํจํ๋ฉด ์ปค๋ฐ์ด ์ค๋จ๋ฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
https://library.gabia.com/contents/8492/
๊ฐ๋น์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
IT ์ฝํ ์ธ ํ๋ธ
library.gabia.com
https://typicode.github.io/husky/get-started.html
Get started | Husky
typicode.github.io
'Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ํ๋์ ๋ ํฌ์งํ ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ (0) | 2024.11.22 |
---|---|
git fetch vs git pull (0) | 2024.11.19 |