이슈와 프로젝트 관리
2. 핵심 원리
2.1 좋은 이슈 작성 — 재현·기대·실제
좋은 버그 이슈는 세 가지를 담습니다. 재현 방법(순서대로 몇 단계), 기대한 동작, 실제로 벌어진 동작입니다. 이 구조가 없으면 담당자가 상황을 재현하지 못해 질문이 왕복하며 시간이 낭비됩니다.
제목은 증상을 한 줄로 요약하고, 본문에는 버전·운영체제 같은 환경 정보를 덧붙입니다. 스크린샷이나 로그도 재현에 큰 도움이 됩니다.
2.2 이슈 템플릿 파일
.github/ISSUE_TEMPLATE/ 폴더에 파일을 두면 "New issue" 버튼을 누를 때 양식을 고를 수 있습니다.
| 파일 | 역할 |
|---|---|
bug_report.md |
버그 신고 양식(재현·기대·실제) |
feature_request.md |
기능 요청 양식(문제·해결책) |
config.yml |
양식 목록 설정, 빈 이슈 허용 여부 |
파일 맨 위 --- 사이 영역(front matter)에 name·about·labels 를 적으면 이슈를 만들 때 제목과 라벨이 미리 채워집니다.
2.3 config.yml 로 빈 이슈 막고 외부 링크 추가
blank_issues_enabled: false 로 두면 양식 없이 빈 이슈를 바로 만드는 길을 막습니다. contact_links 항목으로 "질문은 여기로" 같은 외부 링크(Discussions 등)를 안내합니다.
2.4 라벨(label)로 분류
| 라벨 | 의미 |
|---|---|
bug |
버그 |
enhancement |
기능 개선 |
question |
질문 |
good first issue |
처음 기여자용 |
wontfix |
처리하지 않기로 결정 |
라벨은 색과 이름을 자유롭게 정할 수 있지만, 너무 세분화하면 아무도 정확히 골라 쓰지 않습니다. 팀 규칙으로 10개 안팎을 유지합니다.
2.5 담당자(assignee) 지정
Assignees 필드에 사람을 지정하면 그 사람의 할 일 목록에 이슈가 나타나고 알림이 갑니다. 여러 명을 동시에 지정할 수 있어 페어 작업에도 씁니다. 담당자가 없는 이슈는 "누구 것도 아닌 일" 이 되어 방치되기 쉽습니다.
2.6 마일스톤(milestone)으로 묶기
마일스톤은 이슈와 PR 을 하나의 목표(버전·스프린트)로 묶는 그릇입니다. 마일스톤 화면은 닫힌 개수와 전체 개수로 진행률을 막대로 보여줍니다. "v1.2 에 남은 일" 을 확인할 때 이슈 목록을 마일스톤으로 필터링합니다.
2.7 브랜치 이름에 이슈 번호 넣기
fix/12-login-timeout 처럼 번호와 요약을 함께 넣으면 브랜치 이름만 보고도 어떤 이슈인지 압니다. 접두어(fix/·feat/·chore/)를 팀 규칙으로 통일해 브랜치 목록이 성격별로 정렬되게 합니다.
2.8 커밋 메시지에 이슈 번호 넣기
커밋 본문에 #12 를 적으면 GitHub 가 이슈 화면에 그 커밋 링크를 자동으로 남깁니다. 로컬에서도 git log --grep '#12' 로 같은 이슈를 건드린 커밋을 모두 찾을 수 있습니다.
2.9 이슈 닫기 키워드
PR 이나 커밋 본문에 아래 키워드를 쓰면 병합과 동시에 이슈가 자동으로 닫힙니다.
| 키워드 | 동작 |
|---|---|
Fixes #12, Closes #12, Resolves #12 |
병합 시 이슈 자동 닫힘 |
See #12, Related to #12 |
참조만 하고 닫히지 않음 |
닫기 키워드는 보통 커밋 본문이나 PR 본문에 적습니다. 제목에도 인식되지만, 본문에 적는 습관을 들이면 나중에 커밋만 봐도 의도가 분명합니다.
2.10 프로젝트 보드(칸반)
이슈와 PR 을 Todo·In progress·Done 같은 컬럼으로 옮기며 진행 상태를 한눈에 봅니다.
Todo In progress Done
------------------------------------------------
#7 다크 모드 #20 널 체크 #12 로그인 타임아웃이슈를 닫거나 PR 이 병합되면 카드가 자동으로 Done 컬럼으로 이동하도록 규칙(workflow)을 걸 수 있습니다.
2.11 릴리스 노트 만들기
git log --grep 으로 특정 이슈를 닫은 커밋만 모으고, git shortlog 로 두 태그 사이 커밋을 작성자별로 묶으면 릴리스 노트 초안이 됩니다. GitHub 화면의 "Generate release notes" 버튼도 같은 일을 자동으로 합니다.
2.12 Discussions 와 Wiki
| 기능 | 용도 |
|---|---|
| Issues | 버그·작업 추적(닫힘 상태 있음) |
| Discussions | 질문·아이디어 토론(닫힘 없음) |
| Wiki | 문서·가이드 보관 |
질문성 글이 Issues 에 계속 쌓이면 실제 작업 목록과 섞여 소음이 됩니다. 질문은 Discussions 로, 사용법 문서는 Wiki 로 분리합니다.