Skip to content
On this page

pre-commit hooks 사용법

수정하기
문서 생성 2022-03-08 12:04:20 최근 수정 2022-03-08 12:42:10

Goal

commit 전에 파일을 체크할 수 있는 pre-commit hooks 사용법을 익힌다.

pre-commit

pre-commit은 git에서 commit 하기 직전에 실행되는 hook을 말한다.

pre-commit 설치하기

pre-commit은 pre-commit hook들을 관리할 수 있는 프레임워크인데 설치 방법은 다음과 같다.

$ pip install pre-commit

pre-commit 설정

.pre-commit-config.yaml 파일로 설정이 가능하다. 프로젝트 디렉토리에 다음 명령어로 설정 파일을 추가한다.

$ pre-commit sample-config > .pre-commit-config.yaml

명령어를 실행하고 나면 sample-config라는 템플릿으로 만들어진 파일이 생성된다. 다음과 같이 4개의 hook을 확인할 수 있다.

# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
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

다른 hook 사용하기

pre-commit에 대해 학습한 이유는 .md 파일의 frontmatter를 확인하고 싶어서였다. sample로 제공된 저장소 말고도 다른 hook들은 Supported hooks 페이지에서 확인이 가능하다.

문서가 잘되어 있는 경우가 대부분이다. 다음은 mdformat이라는 hook을 설정한 .pre-commit-config.yaml 파일의 예시이다.

repos:
- repo: https://github.com/executablebooks/mdformat # git 저장소 주소
rev: 0.7.13 # 버전
hooks:
- id: mdformat # hook id
# hook에 전달할 argument
args: [--check]
# plugin 입력 (옵션)
additional_dependencies:
- mdformat-frontmatter # 플러그인명

pre-commit 사용하기

다음 명령어를 입력하면 설정 파일에 명시한 hook들이 우선 설치가 된다.

$ pre-commit run

git commit 명령어를 실행하면 commit이 되기 전에 staged 파일들이 .pre-commit-config.yaml 에 설정된 hook을 거치게 된다.

직접 hook을 실행하기 위해서는 pre-commit run 명령어를 다시 입력한다. staged 파일들에 한해 실행된다.

$ pre-commit run
$ pre-commit run -a # 전체 파일 실행
$ pre-commit run --files 파일명 # 특정 파일 실행

reference