| name | commit-all |
| description | WSS-iOS-V2 프로젝트에서, 현재 Git 변경 전부를 스테이징해 커밋할 때 사용한다. 선택적으로 사용자가 지정한 개수만큼 개념 단위로 나눠 커밋할 수 있다. "전부 커밋", "다 커밋해줘", "/commit-all", "/commit-all 3" 같은 요청에 트리거. 커밋 양식은 `[Type] |
| metadata | {"short-description":"전체 Git 변경을 WSS 양식으로 커밋(선택적 분할)"} |
Commit All (WSS-iOS-V2)
현재 Git 변경 전부를 스테이징해 커밋한다. 스킬명 뒤에 숫자 인자 하나가 오면 그 개수만큼 개념 단위로 분할 커밋한다.
인자
- 선택적 커밋 개수: 양의 정수 (예:
commit-all 3).
- 개수가 없으면 모든 변경을 하나의 커밋으로.
- 개수가 있으면 변경을 그만큼의 일관된 개념 그룹으로 나눌 수 있을 때만 정확히 그 수만큼 커밋한다.
- 요청한 개수가 부적절·불가능하거나 명확한 개념 그룹으로 못 나누면 멈추고 어떻게 나눌지 사용자에게 묻는다.
커밋 양식 (고정)
[Type] #<이슈번호> - <한글 내용>
예: [Fix] #132 - 작품 평가 뒤로가기 경합 수정
[Type]: 아래 Type 표에서 각 커밋의 성격에 맞는 하나. 브랜치의 Type과 무관 — 그 커밋의 변경 내용 기준.
#<이슈번호>: 현재 브랜치명에서 자동 추출한다 (→ 이슈 번호 추출). 분할 커밋이라도 모두 같은 이슈 번호.
<한글 내용>: 변경을 한 줄로 요약한 한글 설명.
- 이 양식에서 벗어나지 않는다. 헷갈리면
git log --oneline -8의 실제 커밋들이 진실.
이슈 번호 추출
git branch --show-current로 현재 브랜치명을 얻는다 (정규형 <Type>/#<번호>, 예: Feat/#132).
- 브랜치명에서
# 뒤 숫자, 없으면 마지막 / 뒤 숫자를 이슈 번호로 쓴다.
- 추출 실패 시 →
git log --oneline -8에서 최근 커밋의 #번호를 재사용하거나, 모호하면 사용자에게 묻는다. 지어내지 않는다.
절차
-
전체 변경 파악:
git status --short 실행.
- unstaged 추적 변경은
git diff --stat, 이미 스테이징된 변경은 git diff --cached --stat로 확인.
git status --short에서 untracked 파일도 메모.
-
이슈 번호 확보: 위 이슈 번호 추출 절차 수행.
-
커밋 그룹 결정:
- 개수 미지정이면 모든 변경을 한 커밋으로 계획.
- 개수가 있으면 파일 경로·diff를 충분히 보고 그만큼의 개념 그룹(독립적 기능/수정/문서/테스트/도구 등)으로 묶는다.
- 파일 수 균형이 아니라 동작·소유 단위로 묶는다. 강하게 결합된 변경을 개수 맞추려 쪼개지 말고, 그럴 땐 의도한 분할을 사용자에게 묻는다.
-
스테이징 & 커밋:
- 스테이징·unstaged·untracked 변경이 하나도 없으면 커밋하지 말고 알린다.
- 단일 커밋:
git add -A 후 스테이징 diff를 검토하고 커밋.
- 분할 커밋: 각 그룹을 명시적 pathspec으로 따로 스테이징. 이미 스테이징돼 있던 변경도 올바른 그룹에 포함시킨다.
- 인덱스에 이미 여러 그룹의 변경이 섞여 있어 그대로 커밋하면 안 되는 경우, 스테이징을 조정하기 전에 멈추고 묻는다.
- 각 커밋 전
git status --short, git diff --cached --stat, git diff --cached --name-only 실행. 필요 시 git diff --cached로 제목 근거 확인.
- 각 그룹을
git commit -m "[Type] #번호 - 내용"으로 커밋.
- 샌드박스가
.git 쓰기를 막으면 좁은 사유를 달아 권한 상승 후 같은 명령 재시도.
-
검증:
git status --short, 만든 커밋 수만큼 git log --oneline -n <count> 실행.
- 각 커밋 해시·제목, 워크트리가 깨끗하지 않으면 남은 파일을 보고한다.
Type 표
각 커밋의 [Type]은 반드시 ../commit-types.md를 읽어 그 표에서 해당 커밋의 성격에 맞는 하나를 고른다.
표를 여기 복제하지 않는다 — 그 파일이 단일 진실 소스다. 커밋 헤더에서는 대괄호로 감싼다([Feat] 등).
안전 규칙
- 기본 단일 커밋 흐름에서는
git add -A가 정상이다.
- 사용자가 커밋 개수를 줬거나 분할을 명시적으로 요청한 경우에만 선택적으로 스테이징한다.
- 사용자의 변경을 보존한다. 스테이징을 비우려
git reset·git checkout 같은 파괴적 명령을 쓰지 말고, 의도한 그룹을 직접 스테이징한다.
- 사용자가 명시적으로 요청하지 않는 한
git reset·git checkout 등 파괴적 명령 금지.
- 워크트리에 명백히 무관하거나 위험한 생성 산출물이 섞여 있으면 멈추고 커밋 전에 묻는다.