# git-commit > Git 커밋 자동화 도구. 테스트 파일 정리, 빌드 검증, 커밋 메시지 자동 생성을 지원. 사용자가 (1) 커밋 요청, (2) 변경사항 정리 후 커밋, (3) "git commit", "커밋해줘", "/git-commit" 요청 시 사용. - Author: Jusun Kim - Repository: e-jusun/cc-system - Version: 20260101142533 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/e-jusun/cc-system - Web: https://mule.run/skillshub/@@e-jusun/cc-system~git-commit:20260101142533 --- --- name: git-commit description: Git 커밋 자동화 도구. 테스트 파일 정리, 빌드 검증, 커밋 메시지 자동 생성을 지원. 사용자가 (1) 커밋 요청, (2) 변경사항 정리 후 커밋, (3) "git commit", "커밋해줘", "/git-commit" 요청 시 사용. --- # Git Commit 테스트 파일 정리, 빌드 검증, 커밋 메시지 자동 생성을 자동화하는 범용 Git 커밋 도구. ## 워크플로우 ### 1. 테스트 파일 정리 테스트/임시 파일 탐색 후 사용자에게 삭제 여부 확인. **탐색 패턴:** ```bash # 테스트 디렉토리 find . -type d \( -name "test" -o -name "tests" -o -name "__tests__" -o -name "test_output" \) \ -not -path "*/node_modules/*" -not -path "*/.git/*" # 테스트 파일 find . -type f \( -name "test_*.py" -o -name "*_test.py" -o -name "*.test.js" -o -name "*.spec.ts" \) \ -not -path "*/node_modules/*" -not -path "*/.git/*" ``` 또는 `scripts/find_test_files.py` 사용. **작업:** 1. 테스트 파일 목록 수집 2. 각 파일 용도 간략 설명 생성 3. AskUserQuestion으로 삭제 여부 확인 (multiSelect: true) 4. 선택된 파일만 삭제 **파일이 없으면 이 단계 생략.** ### 2. 빌드 검증 커밋 전 코드 무결성 검증. **TypeScript 프로젝트:** ```bash [ -f tsconfig.json ] && npx tsc --noEmit 2>&1 ``` **리소스 파일 검증:** ```bash # 0바이트 파일 체크 find . -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.mp3" \) -size 0 ``` **검증 실패 시:** 1. 에러/경고 표시 2. AskUserQuestion: "검증 이슈가 있습니다. 계속 커밋하시겠습니까?" 3. 사용자가 "계속" 선택하면 다음 단계로 ### 3. Git 커밋 **Submodule 자동 감지 (zsh 호환):** ```zsh # Submodule 배열로 가져오기 SUBMODULES=($(git submodule status 2>/dev/null | awk '{print $2}')) # Submodule 제외하고 staging if [[ ${#SUBMODULES[@]} -gt 0 ]]; then EXCLUDE_ARGS=() for sub in "${SUBMODULES[@]}"; do # :(exclude) pathspec 사용 - zsh에서 ! 문자 문제 회피 EXCLUDE_ARGS+=(":(exclude)$sub") done git add --all -- "${EXCLUDE_ARGS[@]}" else git add --all fi ``` **커밋 프로세스:** 1. `git status --short` 실행 2. 변경사항 없으면 알림 후 종료 3. Submodule 제외하고 staging 4. `git diff --cached` 분석 5. `git log -3 --format='%s'` 참고하여 스타일 맞춤 6. 커밋 메시지 자동 생성 **커밋 메시지 형식:** ``` [작업유형] 간략한 제목 상세 변경사항: - 파일1: 변경 내용 - 파일2: 변경 내용 🤖 Generated by Merak ``` **HEREDOC으로 커밋:** ```bash git commit -m "$(cat <<'EOF' 커밋 메시지 내용 EOF )" ``` 커밋 메시지 규칙은 [references/commit-conventions.md](references/commit-conventions.md) 참조. ### 4. 결과 요약 ``` ✅ Git 커밋 완료 📁 정리된 테스트 파일: N개 - file1.py (테스트 스크립트) - file2.png (테스트 출력물) 📝 커밋 정보: 해시: abc1234 메시지: [Feature] 새 기능 구현 파일 통계: - N files changed - +X insertions - -Y deletions ⏭️ 다음 단계: git push로 원격 저장소에 푸시하세요 ``` ## 주의사항 - ❌ 프로덕션 코드는 삭제 제안 금지 - ❌ `.gitignore`에 없는 중요 파일 삭제 금지 - ✅ 변경사항 없으면 커밋 생략 - ✅ 테스트 파일 없으면 정리 단계 생략 - ✅ Submodule 자동 감지하여 제외