post-commit(husky)
post-commit 파일은 husky로 pre-commit 하여 linting 을 수행했을 때, linting 되면서 변경되는 파일들이 많아서 해당 파일들도 한번더 커밋 하도록 한 것인데, 파일별로 커밋을 나눠서 하고 싶을 때에도 모든 파일을 커밋해버린다거나 하는 문제가 있어요. 해결할 방법이 있을까요?
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# Get the list of staged files before linting
STAGED_FILES=$(git diff --cached --name-only)
# Run linting
pnpm lint
pnpm format
# Get the list of modified files after linting
MODIFIED_FILES=$(git diff --name-only)
# Find files that were both staged and modified
FILES_TO_COMMIT=$(comm -12 <(echo "$STAGED_FILES" | sort) <(echo "$MODIFIED_FILES" | sort))
if [ ! -z "$FILES_TO_COMMIT" ]; then
# Add only the files that were both staged and modified
echo "$FILES_TO_COMMIT" | xargs git add
git commit --amend --no-edit
fi
- linting 전에 스테이징된 파일들의 목록을 저장
- linting과 포맷팅 실행
- linting 후에 수정된 파일들의 목록을 가져옴
comm
명령어를 사용하여 두 목록의 교집합을 찾음 (즉, 원래 스테이징되어 있었고 linting으로 수정된 파일들)- 해당 파일들만
git add
로 스테이징하고 커밋을 수정
이렇게 하면:
- linting으로 수정된 파일들만 커밋됨
- 다른 파일들은 영향을 받지 않음
- 원래 커밋 메시지는 유지됨 (
--no-edit
옵션 사용)
이제 파일별로 커밋을 나누어 할 때도 linting 수정사항만 해당 파일에 적용됩니다.
'library' 카테고리의 다른 글
[250719 TIL] Prisma Type 사용관련 (0) | 2025.07.19 |
---|---|
[250719 TIL] Tanstack SSR시 왜 클라이언트 매번 새로 생성? (0) | 2025.07.19 |
[250225 TIL] Hasura란?(GPT질의) (0) | 2025.02.25 |
[241220 TIL] 기본적인 husky 세팅 (1) | 2024.12.20 |
[241219 TIL] Framer-motion 기초 (0) | 2024.12.19 |