Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 프레임 워크
- CSS
- 비제어
- 오블완
- 개발자
- 개발
- tailwind css
- 브라우저 동작
- 회고록
- github
- javascript
- 협업
- react
- next.js
- form
- Pr
- react-query
- Fe
- zustand
- 사과게임
- useState
- svelte
- Context API
- js
- frontend
- barrel export
- Study
- 티스토리챌린지
- PullRequest
- ci/cd
Archives
- Today
- Total
ougi FE
Git Hooks와 Husky란? 본문
728x90
오늘은 깃허브를 보다가 발견한 Husky에 대해서 알아보면서 기본으로 알아야 할 Git Hook까지 알아보도록 하겠습니다
Git Hooks란?
Git Hooks는 Git repository에서 특정 이벤트가 발생할 때마다 자동으로 실행되는 스크립트입니다
훅은 .git/hooks 이곳에 저장됩니다
이 디렉토리에서는 Git이 기본적으로 제공한 유용한 스크립트 예제가 몇가지 존재합니다
그리고 스크립트가 입력받는 값이 어떤 값인지 파일 안에 자세히 설명되어 있습니다
클라이언트 훅과 서버 훅으로 나눌 수 있습니다
클라이언트 훅
commit이나 merge를 할 때 실행됩니다
클라이언트 훅은 매우 다양해서 committing-workflow 훅, email-workflow 훅, 기타가 있는데
저는 committing-workflow 훅과 기타 훅만 설명 드리겠습니다
- committing-workflow 훅: git commit 명령어를 통해 commit을 진행할 때 실행
- pre-commit: 훅은 커밋할 때 가장 먼저 호출되는 훅으로 커밋 메시지를 작성하기 전에 호출 (코드 검사)
- prepare-commit-msg: Git이 커밋 메시지를 생성하고 나서 편집기를 실행하기 전에 실행 (커밋 메시지 수정, 추가)
- commit-msg: commit을 하기 바로 전 실행 (프로젝트 상태나 커밋 메시지를 검증)
- post-commit: commit이 완료 된 후 실행 ( 커밋된 것을 누군가 혹은 다른 프로그램에게 알릴 때 사용)
- 기타 훅
- pre-rebase: Rebase 하기 전에 실행 (리베이스가 가능한지 검사, 테스트 실행)
- post-rewrite: 커밋을 변경하는 명령을 실행했을 때 실행 git commit --amend 이나 git rebase ( 변경된 커밋 로그 저장, 알림 출력 활용)
- post-merge: Merge가 끝나고 나서 실행 (원하는 대로 잘 배치됐는지 검사)
- pre-push: git push 명령 실행 시 작동하고 remote 정보를 업데이트 한 후 데이터를 전송하기 전 실행, push 중단 가능
서버 훅
서버 훅은 모두 Push 전후에 실행됩니다
- pre-receive: Push 하면 가장 처음 실행 (브랜치 보호, 코드 검사, 민감한 파일 푸시 방지)
- update: 브랜치 별로 Push가 발생 했을 때 실행 (테스트 검증, 강제 푸시 방지, 특정 브랜치 보호)
- post-receive: Push 한 후 실행 (푸시된 내용을 기반으로 알림, 자동 배포, 로그 저장)
git commit --amend
마지막 커밋을 수정하거나 덧붙여서 새로 커밋을 만들지 않고 기존 커밋을 덮어씁니다
git rebase
현재 브랜치를 다른 브랜치 위로 옮겨서 커밋 히스토리를 새롭게 만들 수 있습니다
Husky란?
Husky는 git hooks을 적용하게 도와주는 라이브러리입니다
Husky를 사용하면 git을 사용할 때 특정 스크립트를 실행시킬 수 있는 라이브러리입니다
사용하기
# npm
npx husky-init && npm install
# yarn
yarn add husky --dev
yarn husky install
위 명령어로 적용하면 .husky 디렉토리가 생깁니다 그 안에 hook 스크립트를 추가하면 됩니다
예시
ESLint + lint-staged + Husky 조합
/.husky
└─ .gitignore
└─ husky.sh
└─ 내가 추가할 script...
└─ pre-commit # 예시
# ./husky/pre-commit
/.husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
lint-staged
staged 상태에 놓인 파일을 검사하여 lint를 통과하지 못한 파일은 commit failed 처리 시키는 라이브러리
글을 마치며
오늘은 Git Hooks와 Husky에 대해서 알아보았는데
이것들을 이용하면 협업을 훨씬 더 체계적으로 하게 될 수 있을거 같아서 좋았습니다
글을 읽어주셔서 감사합니다
728x90