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 수정사항만 해당 파일에 적용됩니다.
'TIL' 카테고리의 다른 글
[250318 TIL] 인앱에서 튕겨버리고 싶을때 (0) | 2025.03.18 |
---|---|
[250313 TIL] 마이크로프론트엔드(딥리서치) (0) | 2025.03.13 |
[250225 TIL] Hasura란?(GPT질의) (0) | 2025.02.25 |
[250225 TIL] n8n 이란?(GPT질의) (0) | 2025.02.25 |
[250222 TIL] rebase, merge 비교 (0) | 2025.02.22 |
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 수정사항만 해당 파일에 적용됩니다.
'TIL' 카테고리의 다른 글
[250318 TIL] 인앱에서 튕겨버리고 싶을때 (0) | 2025.03.18 |
---|---|
[250313 TIL] 마이크로프론트엔드(딥리서치) (0) | 2025.03.13 |
[250225 TIL] Hasura란?(GPT질의) (0) | 2025.02.25 |
[250225 TIL] n8n 이란?(GPT질의) (0) | 2025.02.25 |
[250222 TIL] rebase, merge 비교 (0) | 2025.02.22 |