홈 › GitHub › 04 / 5

이슈와 프로젝트 관리

섹션 7진행 0 / 5

3. 코드 예제

예제 1: 이슈 템플릿 추가 — 01_issue_project.sh 발췌

bash
mkdir -p .github/ISSUE_TEMPLATE
cat > .github/ISSUE_TEMPLATE/bug_report.md <<'EOF'
---
name: 버그 신고
about: 재현 가능한 문제를 보고합니다
labels: bug
---

## 재현 방법
1.
2.

## 기대한 동작

## 실제 동작
EOF
# feature_request.md, config.yml 도 같은 방식으로 작성
git add .github
commit_at "chore: 이슈 템플릿 추가"
ls .github/ISSUE_TEMPLATE
text
bug_report.md
config.yml
feature_request.md

세 파일을 커밋하면 다음부터 "New issue" 버튼에 양식 선택 화면이 나타납니다. config.yml 은 빈 이슈를 막고 질문은 Discussions 로 안내합니다.

예제 2: 이슈 번호를 담은 브랜치와 닫기 키워드 커밋 — 01_issue_project.sh 발췌

bash
git switch -q -c fix/12-login-timeout
printf 'login timeout fix\n' >> app.txt
git add app.txt
commit_at "fix: 로그인 타임아웃 수정

Fixes #12"
git push -q -u origin fix/12-login-timeout

이 커밋은 출력 없이 조용히 끝나지만, 커밋 본문에 Fixes #12 가 남아 예제 3 의 log --grep 으로 다시 찾을 수 있습니다. 브랜치 이름 fix/12-login-timeout 도 이슈 번호를 그대로 담고 있습니다.

예제 3: 관리자 병합과 log --grep — 01_issue_project.sh 발췌

bash
git switch -q main
merge_at "Merge pull request #21 from fix/12-login-timeout" fix/12-login-timeout
git push -q origin main
git push -q origin --delete fix/12-login-timeout
git branch -q -d fix/12-login-timeout
# (중략: 5번 구간에서 이슈 7·20 번도 같은 방식으로 처리)
git log --oneline --grep '#12'
echo "---"
git log --oneline --grep 'Closes #7'
text
7c5231d fix: 로그인 타임아웃 수정
---
2d927d5 feat: 다크 모드 추가

실제 GitHub 화면이라면 fix/12-login-timeout 의 PR 이 병합되는 순간 이슈 12번이 자동으로 닫힙니다. --grep 은 커밋 메시지 전체(제목+본문)를 검색하므로 본문에 적은 이슈 번호도 잡아냅니다.

예제 4: 태그와 shortlog 로 릴리스 노트 — 01_issue_project.sh 발췌

bash
tag_at v1.1.0 "release: v1.1.0"
git push -q origin v1.1.0
git shortlog v1.0.0..v1.1.0 --no-merges
text
kim (4):
      fix: 로그인 타임아웃 수정
      chore: 이슈 템플릿 추가
      feat: 다크 모드 추가
      fix: 널 체크 누락 수정

--no-merges 로 병합 커밋을 빼면 실제로 바뀐 내용만 작성자별로 정리됩니다. 이 목록을 다듬으면 릴리스 노트 초안이 완성됩니다.