7.4 KiB
7.4 KiB
PR 생성
Git 변경 분석기반의 자동 PR 생성으로 효율적인 Pull Request 워크플로를 실현합니다.
사용법
# 변경 분석을 통한 자동 PR 생성
git add . && git commit -m "feat: 사용자 인증 기능 구현"
"변경 내용을 분석해서 적절한 설명문과 라벨로 Draft PR 을 생성하세요"
# 기존 템플릿 유지하며 업데이트
cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md
"템플릿 구조를 완전히 유지하고 변경 내용을 보완하세요"
# 단계적 품질 향상
gh pr ready
"품질 확인 완료 후 Ready for Review 로 변경하세요"
기본 예시
# 1. 브랜치 생성과 커밋
git checkout main && git pull
git checkout -b feat-user-profile
git add . && git commit -m "feat: 사용자 프로필 기능 구현"
git push -u origin feat-user-profile
# 2. PR 생성
"다음 순서로 PR 을 생성해주세요:
1. git diff --cached 로 변경 내용을 확인
2. .github/PULL_REQUEST_TEMPLATE.md 를 사용해서 설명문 작성
3. 변경 내용에서 적절한 라벨을 최대 3 개 선택
4. Draft PR 로 생성 (HTML 코멘트 유지)"
# 3. CI 확인 후 Ready 화
"CI 가 통과하면 PR 을 Ready for Review 로 변경하세요"
실행 절차
1. 브랜치 생성
# 가이드라인을 준수한 네이밍 규칙: {type}-{subject}
git checkout main
git pull
git checkout -b feat-user-authentication
# 브랜치 확인 (현재 브랜치명 표시)
git branch --show-current
2. 커밋
# 변경사항 스테이징
git add .
# 가이드라인을 준수한 커밋 메시지
git commit -m "feat: 사용자 인증 API 구현"
3. 리모트에 Push
# 첫 번째 Push (upstream 설정)
git push -u origin feat-user-authentication
# 두 번째부터
git push
4. 자동 분석을 통한 Draft PR 생성
Step 1: 변경 내용 분석
# 파일 변경 사항 취득 (스테이지된 변경 확인)
git diff --cached --name-only
# 내용 분석 (최대 1000 행)
git diff --cached | head -1000
Step 2: 설명문 자동 생성
# 템플릿 처리 우선순위
# 1. 기존 PR 설명 (완전 보존)
# 2. .github/PULL_REQUEST_TEMPLATE.md
# 3. 기본 템플릿
cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md
# HTML 코멘트·구분선을 유지하며 빈 섹션만 보완
Step 3: 라벨 자동 선택
# 사용 가능한 라벨 취득 (비대화형)
".github/labels.yml 또는 GitHub 저장소에서 사용 가능한 라벨을 취득해서, 변경 내용에 기반해 적절한 라벨을 자동 선택하세요"
# 패턴 매칭을 통한 자동 선택 (최대 3 개)
# - 문서: *.md, docs/ → documentation|docs
# - 테스트: test, spec → test|testing
# - 버그 수정: fix|bug → bug|fix
# - 새 기능: feat|feature → feature|enhancement
Step 4: GitHub API 로 PR 생성 (HTML 코멘트 유지)
# PR 생성
"다음 정보로 Draft PR 을 생성해주세요:
- 제목: 커밋 메시지에서 자동 생성
- 설명문: .github/PULL_REQUEST_TEMPLATE.md 를 사용해서 적절히 작성
- 라벨: 변경 내용에서 자동 선택 (최대 3 개)
- 기본 브랜치: main
- HTML 코멘트는 완전히 보존"
방법 B: GitHub MCP (폴백)
// HTML 코멘트 유지하며 PR 생성
mcp_github_create_pull_request({
owner: "organization",
repo: "repository",
base: "main",
head: "feat-user-authentication",
title: "feat: 사용자 인증 구현",
body: prBodyContent, // HTML 코멘트를 포함한 전체 내용
draft: true,
maintainer_can_modify: true,
});
자동 라벨 선택 시스템
파일 패턴 기반 판정
- 문서:
*.md,README,docs/→documentation|docs|doc - 테스트:
test,spec→test|testing - CI/CD:
.github/,*.yml,Dockerfile→ci|build|infra|ops - 의존성:
package.json,pubspec.yaml→dependencies|deps
변경 내용 기반 판정
- 버그 수정:
fix|bug|error|crash|수정→bug|fix - 새 기능:
feat|feature|add|implement|새기능|구현→feature|enhancement|feat - 리팩터링:
refactor|clean|리팩터링→refactor|cleanup|clean - 성능:
performance|perf|optimize→performance|perf - 보안:
security|secure→security
제약 사항
- 최대 3 개까지: 자동 선택의 상한
- 기존 라벨만: 신규 생성 금지
- 부분 매치: 키워드 포함을 통한 판정
프로젝트 가이드라인
기본 자세
- 반드시 Draft 로 시작: 모든 PR 은 Draft 상태로 생성
- 단계적 품질 향상: Phase 1 (기본 구현) → Phase 2 (테스트 추가) → Phase 3 (문서 업데이트)
- 적절한 라벨: 최대 3 종류의 라벨을 반드시 부여
- 템플릿 사용:
.github/PULL_REQUEST_TEMPLATE.md를 반드시 사용 - 한국어 스페이스: 한국어와 반각 영숫자 사이에 반드시 반각 스페이스
브랜치 네이밍 규칙
{type}-{subject}
예시:
- feat-user-profile
- fix-login-error
- refactor-api-client
커밋 메시지
{type}: {description}
예시:
- feat: 사용자 인증 API 구현
- fix: 로그인 오류 수정
- docs: README 업데이트
템플릿 처리 시스템
처리 우선순위
- 기존 PR 설명: 이미 기술된 내용을 완전히 보존
- 프로젝트 템플릿:
.github/PULL_REQUEST_TEMPLATE.md구조 유지 - 기본 템플릿: 위가 존재하지 않는 경우
기존 내용 보존 규칙
- 한 글자도 변경하지 않음: 이미 기술된 내용
- 빈 섹션만 보완: 플레이스홀더 부분을 변경 내용으로 채움
- 기능적 코멘트 유지:
<!-- Copilot review rule -->등을 유지 - HTML 코멘트 유지:
<!-- ... -->를 완전히 보존 - 구분선 유지:
---등의 구조를 유지
HTML 코멘트 보존 대처법
중요: GitHub CLI (gh pr edit)는 HTML 코멘트를 자동 이스케이프하고, 셸 처리에서 EOF < /dev/null 등의 불법 문자열이 혼입되는 경우가 있습니다.
근본적 해결책:
- GitHub API 의 --field 옵션 사용: 적절한 이스케이프 처리로 HTML 코멘트 보존
- 템플릿 처리 단순화: 복잡한 파이프 처리나 리다이렉트를 피함
- 완전 보존 접근: HTML 코멘트 삭제 처리를 폐지하고 템플릿을 완전 보존
리뷰 코멘트 대응
# 변경 후 재커밋
git add .
git commit -m "fix: 리뷰 피드백기반의 수정"
git push
주의사항
HTML 코멘트 보존의 중요성
- GitHub CLI 제한:
gh pr edit는 HTML 코멘트를 이스케이프하고 불법 문자열 혼입 - 근본적 회피책: GitHub API 의
--field옵션으로 적절한 이스케이프 처리 - 템플릿 완전 보존: HTML 코멘트 삭제 처리를 폐지하고 구조를 완전 유지
자동화 제약
- 신규 라벨 금지:
.github/labels.yml정의 외 라벨 생성 불가 - 최대 3 라벨: 자동 선택의 상한
- 기존 내용 우선: 수동으로 기술된 내용은 일체 변경하지 않음
단계적 품질 향상
- Draft 필수: 모든 PR 은 Draft 로 시작
- CI 확인:
gh pr checks로 상태 확인 - Ready 이행: 품질 확인 완료 후
gh pr ready - 템플릿 완전 준수: 프로젝트별 구조를 유지