코드 변경을 Commit 할 때 code formating 을 자동화하는 툴.
Issue -> Feature Request 에서

Issue 생성헤서 팀원들에게 오늘 뭐 할건지 알려주기.
① 먼저 main 브랜치로 가서 -> git pull명령어를 통해 새로운 업데이트 사항을 local repo에 받아옴.
git checkout main
git pull origin main
② feat-3/pre-commit 브랜치를 생성 후 브랜치 변경
git checkout -b feat-3/pre-commit
① pip install pre-commit을 통해 pre-commit 설치
pip install pre-commit
② pre-commit sample-config > .pre-commit-config.yaml을 통해 yaml 파일 생성
🤔 yaml 이 뭐지?
✍️ yaml은, YAML Ain't Markup language로 사람이 읽기 쉬운 데이터 직렬화 방식으로 데이터를 저장 형식으로 사용.
# 1. 키-값 쌍(딕셔너리)
name: John
age: 30
address:
city: New York
zipcode: 10001
# 2.리스트 (각 항목은 - 로 구별)
languages:
- Python
- JavaScript
- C++
# 3. 복합구조
employees:
- name: Alice
age: 28
skills:
- Python
- Data Science
- name: Bob
age: 35
skills:
- JavaScript
- DevOps
# ex) Docker compose
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: postgres
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: password
③ .pre-commit-config.yaml 파일을 다음과 같이 변환함
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/psf/black
rev: 24.8.0
hooks:
- id: black
✍️ 상세히 추가된 부분 알아보자.
추가된 부분은 이 밑의 4부분인데 각각의 의미를 알아보자.
- repo: https://github.com/psf/black
rev: 24.8.0
hooks:
- id: black
repo: https://github.com/psf/black : pre-commit 도구에서 사용할 블랙 포맷터의 Git 저장소.
rev: 24.8.0 : Black의 특정 버전
hooks : Git 커밋전에 실행될 작업 목록을 정의하는 섹션.
-> 여기는 black 포맷터를 실행하는 작업이 포함됨.
id:black : hooks에서 어떤 작업을 실행할지 정의하는 항목, id:black은 black 포맷터를 실행하겠다는 뜻.
④ pre-commit autoupdate 를하면 자동으로 버전이 최신버전으로 yaml이 바뀐다.
⑤ pre-commit install
⑥ add -> commit 해서 원격에 추가해줌
git add .pre-commit-config.yaml
git commit -m "feat :Add pre-commit config
>
> #3" #3번 tag
⑦ pre-commit 을 실행해서 format을 맞추어 보자.
pre-commit run --all-files
⑧ 그후 git status라고 치면 이렇게 나온다.

⑨ 이제 commit 해보자
git add .
git commit -m "refactor : Apply pre-commit"
#마지막으로 push
git push origin feat-3/pre-commit

이러면 진짜 끝.