100일 챌린지 Day 71 - GitHub Issues는 버그 추적, 기능 요청, 작업 관리를 위한 핵심 도구입니다.
⏱️ 예상 학습 시간: 30-40분 📚 난이도: ⭐⭐ (초급-중급)
배울 내용
- Issues의 역할과 구성 요소
- Issue 생성과 작성법
- 라벨과 마일스톤 활용
시작하기 전에
이 내용은 다음 개념을 알고 있다면 더 쉽게 이해할 수 있습니다:
- ✅ GitHub 계정 생성 (Day 2)
- ✅ Repository 생성 및 관리 (Day 12-13)
- ✅ Markdown 기본 문법 (Day 4-5)
처음이라면 걱정하지 마세요! 차근차근 따라오시면 됩니다.
1. Issues란?
정의와 목적
GitHub Issues는 프로젝트의 작업, 버그, 개선 사항을 추적하는 도구입니다.
1
2
3
4
5
6
7
8
| Issue = 디지털 할 일 카드
┌─────────────────────────┐
│ #123 로그인 버그 수정 │
│ Label: bug, priority:high│
│ Assignee: @developer │
│ Milestone: v2.0 │
│ 댓글 3개, 진행 중 │
└─────────────────────────┘
|
Issue의 구성 요소
| 요소 | 설명 | 예시 |
| 제목 | 간단한 설명 | “로그인 시 404 에러” |
| 본문 | 상세 설명 | 재현 방법, 스크린샷 등 |
| 라벨 | 분류 태그 | bug, enhancement |
| 담당자 | 작업자 | @username |
| 마일스톤 | 그룹화 | v2.0 Release |
| 프로젝트 | 연결된 프로젝트 보드 | Sprint 1 |
2. Issue 생성하기
기본 생성 방법
1
| Repository → Issues → New issue
|
좋은 Issue 작성 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| 제목: 로그인 버튼 클릭 시 404 에러
## 📝 설명
사용자가 로그인 버튼을 클릭하면 404 에러 페이지로 이동합니다.
예상되는 동작은 로그인 페이지(`/login`)로 이동하는 것입니다.
## 🔄 재현 방법
1. 메인 페이지(`https://example.com`) 접속
2. 우측 상단 '로그인' 버튼 클릭
3. 404 에러 페이지 표시됨
## ✅ 예상 동작
- 로그인 페이지(`/login`)로 정상 이동
## ❌ 실제 동작
- 404 에러 페이지 표시
## 🖥️ 환경
- Browser: Chrome 120.0.6099.129
- OS: macOS 14.2
- 계정 상태: 로그아웃 상태
## 📸 스크린샷

## 💡 추가 정보
- 콘솔 에러: `GET /logn 404 (Not Found)`
- URL 오타로 추정됨 (`/logn` 대신 `/login`)
|
실전 팁
좋은 Issue 작성법:
- ✅ 구체적인 제목 (나쁜 예: “버그”, 좋은 예: “로그인 버튼 404 에러”)
- ✅ 재현 가능한 단계 제공
- ✅ 스크린샷이나 로그 첨부
- ✅ 환경 정보 명시
피해야 할 것:
- ❌ “안 돼요”, “버그 있어요” 같은 모호한 설명
- ❌ 여러 문제를 하나의 Issue에 혼합
- ❌ 감정적인 표현
3. 라벨 활용
기본 라벨
GitHub는 기본적으로 다음 라벨을 제공합니다:
| 라벨 | 색상 | 용도 |
bug | 🔴 빨강 | 버그 보고 |
enhancement | 🔵 파랑 | 기능 개선 |
documentation | 📘 청록 | 문서 작업 |
question | 💜 보라 | 질문 |
good first issue | 💚 초록 | 초보자 적합 |
help wanted | 🟢 연두 | 도움 요청 |
duplicate | ⚪ 회색 | 중복 |
wontfix | ⚫ 검정 | 수정 안 함 |
커스텀 라벨 만들기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Settings → Labels → New label
예시:
- priority:critical (🔴)
- priority:high (🟠)
- priority:medium (🟡)
- priority:low (🟢)
- type:feature (💎)
- type:refactor (🔧)
- type:security (🔒)
- status:in-progress (🏃)
- status:blocked (🚫)
- status:review (👀)
|
라벨 활용 팁
다중 라벨 조합:
1
2
3
| Issue #123
Labels: bug + priority:high + backend
→ "긴급한 백엔드 버그"
|
라벨로 필터링:
1
2
| label:bug → 모든 버그 보기
label:"good first issue" → 초보자용 작업
|
4. Issue 할당하기
담당자 지정
1
2
3
4
| Assignees 섹션에서:
- @username 선택
- 본인 할당: "assign yourself"
- 최대 10명까지 가능
|
할당의 장점
1
2
3
4
| ✅ 책임 소재 명확화
✅ 작업 분배 가시화
✅ 알림 자동 전송
✅ 진행 상황 추적 용이
|
실전 예시
1
2
3
4
5
6
| Issue #456: 결제 API 오류 수정
Assignee: @backend-dev
Labels: bug, priority:high, backend
→ @backend-dev에게 알림 전송
→ 담당자의 대시보드에 표시
|
5. 마일스톤 활용
마일스톤이란?
목적: 관련 Issue들을 그룹화하여 릴리스나 스프린트 관리
1
2
3
4
5
6
7
8
9
10
11
| Milestone: v2.0 Release
┌─────────────────────┐
│ 진행률: 7/10 (70%) │
│ Due: 2024-12-31 │
├─────────────────────┤
│ ✅ #101 로그인 기능 │
│ ✅ #102 회원가입 │
│ ✅ #103 프로필 │
│ ⬜ #104 알림 │
│ ⬜ #105 검색 │
└─────────────────────┘
|
마일스톤 생성
1
2
3
4
5
| Issues → Milestones → New milestone
제목: v2.0 Release
기한: 2024-12-31
설명: 2.0 버전 출시를 위한 필수 기능들
|
활용 예시
1
2
3
4
5
6
7
8
| 스프린트 관리:
- Sprint 1 (2주) - 8개 issue
- Sprint 2 (2주) - 10개 issue
릴리스 관리:
- v1.5 Patch - 버그 수정
- v2.0 Major - 새 기능
- v2.1 Minor - 개선
|
6. Issue 템플릿
💡 초보자 팁 Issue 템플릿이 어렵게 느껴지시나요? 걱정하지 마세요! GitHub에서 제공하는 기본 템플릿을 사용하거나, 아래 예시를 복사해서 사용하면 됩니다. Repository 설정에서 “Set up templates” 버튼을 누르면 자동으로 생성할 수도 있습니다!
템플릿 파일 생성
1
2
3
4
5
| # 디렉토리 생성
mkdir -p .github/ISSUE_TEMPLATE
# 버그 리포트 템플릿
touch .github/ISSUE_TEMPLATE/bug_report.md
|
버그 리포트 템플릿
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| ---
name: 🐛 Bug Report
about: 버그를 보고해주세요
title: "[BUG] "
labels: bug
assignees: ''
---
## 버그 설명
버그에 대한 명확하고 간결한 설명을 작성해주세요.
## 재현 방법
1. '...'로 이동
2. '...'을 클릭
3. '...'까지 스크롤
4. 에러 확인
## 예상 동작
어떤 결과를 기대했는지 작성해주세요.
## 실제 동작
실제로 어떤 일이 발생했는지 작성해주세요.
## 스크린샷
가능하다면 스크린샷을 첨부해주세요.
## 환경
- OS: [예: macOS 14]
- Browser: [예: Chrome 120]
- Version: [예: v1.2.3]
## 추가 정보
기타 맥락이나 정보를 추가해주세요.
|
기능 요청 템플릿
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| ---
name: ✨ Feature Request
about: 새로운 기능을 제안해주세요
title: "[FEATURE] "
labels: enhancement
assignees: ''
---
## 기능 설명
어떤 기능을 원하시나요?
## 문제 상황
현재 어떤 문제가 있나요? (선택)
## 제안하는 해결책
어떻게 구현하면 좋을까요?
## 대안
다른 방법도 고려해보셨나요? (선택)
## 추가 정보
기타 정보를 추가해주세요.
|
7. Issue 참조와 연결
Issue 간 참조
1
2
3
4
5
6
| # 다른 Issue 언급
#123을 참고해주세요
Related to #456
Duplicate of #789
# 자동 링크 생성됨
|
PR에서 Issue 자동 닫기
키워드 사용:
1
2
3
4
5
6
7
| 커밋 메시지나 PR 설명에:
Closes #123
Fixes #456
Resolves #789
→ PR 머지 시 자동으로 Issue 닫힘
|
여러 Issue 닫기:
1
2
3
4
5
6
7
| fix: Login button routing
로그인 버튼 라우팅 오류 수정
Closes #123
Closes #124
Fixes #125
|
크로스 레퍼런스
1
2
3
4
5
6
7
8
| # 다른 저장소 Issue 참조
user/other-repo#123
# PR 참조
PR #456
# 커밋 참조
commit abc1234
|
실전 예시
1
2
3
4
5
6
7
8
9
10
11
| Issue #123: 로그인 버튼 404 에러
댓글:
"#456과 동일한 원인으로 보입니다.
PR #789에서 함께 수정하겠습니다."
→ PR #789 설명:
"fix: Fix routing issues
Closes #123
Closes #456"
|
직접 해보기 (20분)
실습을 통해 배운 내용을 체화해봅시다!
📝 실습 1: 첫 Issue 만들기 (5분)
1
2
3
4
5
| - [ ] 1. 연습용 Repository 생성 (또는 기존 저장소 사용)
- [ ] 2. "New issue" 클릭
- [ ] 3. 제목: "테스트 Issue - 첫 Issue 생성"
- [ ] 4. 본문: 위의 좋은 예시 형식 따라 작성
- [ ] 5. Submit 클릭
|
🏷️ 실습 2: 라벨 추가하기 (5분)
1
2
3
4
5
| - [ ] 1. Settings → Labels 이동
- [ ] 2. "New label" 클릭
- [ ] 3. 이름: "priority:high", 색상: 빨강
- [ ] 4. 생성한 Issue에 라벨 추가
- [ ] 5. 필터로 확인: label:"priority:high"
|
🎯 실습 3: 마일스톤 생성 (5분)
1
2
3
4
5
| - [ ] 1. Issues → Milestones → New milestone
- [ ] 2. 제목: "v1.0 Release"
- [ ] 3. 기한: 다음 달 말일
- [ ] 4. Issue를 마일스톤에 할당
- [ ] 5. 진행률 확인
|
📋 실습 4: Issue 템플릿 (5분)
1
2
3
4
5
| - [ ] 1. Settings → Features → Issues → Set up templates
- [ ] 2. "Bug report" 템플릿 선택
- [ ] 3. 내용 확인 후 "Propose changes"
- [ ] 4. Commit 생성
- [ ] 5. 새 Issue 생성 시 템플릿 확인
|
막히는 부분이 있다면?
- GitHub Discussions에 질문하거나
- 커뮤니티에서 도움 받으세요!
😰 어려우시다면
이 내용이 어렵게 느껴진다면:
- 천천히 진행하세요
- 한 번에 모든 기능을 사용할 필요 없습니다
- Issue 생성부터 시작해서 점진적으로 확장하세요
- 간단한 프로젝트로 연습
- 개인 TODO 리스트 프로젝트 만들기
- 매일 하나씩 Issue로 관리해보기
- 복습 추천
- Day 12-13: Repository 기본 다시 보기
- Day 4-5: Markdown 문법 복습
- 도움 요청하기
- 댓글로 질문 남기기
- GitHub Community에서 검색
꼭 기억하세요: 한 번에 완벽하게 이해할 필요 없습니다! 실제로 사용하면서 익숙해지는 것이 가장 좋은 학습 방법입니다.
정리
완료 체크:
- Issue를 생성할 수 있다
- 라벨과 마일스톤을 활용할 수 있다
- Issue 템플릿을 만들 수 있다
- 직접 실습을 완료했다
핵심 요약:
- Issue = 작업 추적 도구
- 라벨로 분류, 마일스톤으로 그룹화
- 템플릿으로 일관성 유지
다음: Day 72 - Issues 관리 →