Dev/VCS

GitHub Issues

dragonhyeon 2025. 7. 21. 12:53
728x90
반응형

Issues

GitHub 의 Issue 는 버그 리포트, 기능 요청, 질문, 작업 항목 등을 기록하고 추적하는 데 사용하는 토론 중심의 티켓 시스템입니다.

Issues 작성 방법

  • title 및 description 작성 & 적절한 Assignees, Labels 등 지정
  • 혹은 Issue Templates 을 활용하여 작성
  • 제목은 일반적으로 [이슈 유형] 간결한 제목 설명 과 같은 형태로 작성
    • ex.
      • [Feature] 페이지 끝에서 자동으로 다음 페이지로 넘어가는 기능 추가
      • [Feature] Add auto-pagination when macro reaches the last page
  • 설명은 자유 형식으로 서술형 응답으로 작성하면 되며, 템플릿에서 항목을 제공할 경우 항목에 맞게 작성하면 됨

Issue Templates

  • 사용자가 Issue 항목을 일관성있고 편하게 작성할 수 있도록 기본적인 Issue 템플릿 제공 가능
  • MD 파일 혹은 YAML 파일로 작성 가능
    • MD 파일을 사용할 경우 YAML Front Matter 를 작성해야 함
YAML Front Matter: Markdown 파일의 맨 앞에 위치하는 YAML 형식의 메타데이터 블록입니다. MD 파일을 사용해 Issue Templates 을 생성하려면 YAML Front Matter 를 작성해야합니다.

Issue Templates 선택형 템플릿 UI

  • .github/ISSUE_TEMPLATE/ 아래에 여러 .md 파일이 존재해야 함
  • issue templates 파일의 이름은 자유. 관행적으로 사용되는 파일명은 존재
    • 대체로 이슈의 성격 또는 카테고리에 따라 파일명 지정
      • 거의 모든 프로젝트에서 사용되는 템플릿
        • bug_report.md: 버그 리포트용
        • feature_request.md: 기능 추가 요청용
      • 그 외 자주 사용되는 템플릿
        • question.md: 일반적인 질문 또는 문의
        • support.md: 지원 요청 또는 도움 요청
        • documentation.md: 문서 관련 이슈
        • other.md: 범주에 속하지 않는 기타 이슈
        • performance_issue.md: 성능 관련 이슈
        • refactor.md: 리팩토링 제안
  • 해당 구조를 따르면 GitHub 상에서 New issue 생성 시 템플릿 선택창 UI 제공
  • 참고로 PR 템플릿은 UI 미제공

Issue Templates vs PR Templates

  • Issue Templates
    • .github/ISSUE_TEMPLATE/ 아래에 이슈의 목적에 따라 여러 개의 템플릿을 제공하는게 일반적
  • PR Templates
    • .github/ 아래에 단일 템플릿을 제공하는게 일반적

.github 폴더

  • GitHub 에서 사용하는 공식적인 특수 디렉터리 (단순 관행이 아니라 GitHub 에서 기능 인식을 위해 설계된 공식 폴더)
  • 저장소 수준에서 GitHub 기능을 설정하거나 문서화할 때 사용
  • PR 템플릿, Issue 템플릿, CODEOWNERS, FUNDING, workflows (GitHub Actions) 등 GitHub 관련 구성 파일을 저장

Issue Templates 작성 방식

  • 제목 (#, ##) 바로 아래에 공백 줄 한 칸 남기는 것이 일반적이고 권장됨
  • 내용 마지막 줄 이후엔 공백 줄 남기지 않는 것이 일반적이고 권장됨
  • 해당 항목에 작성할 내용이 없을 경우 공백으로 남겨두기 보다는 N/A 를 명시하는것이 일반적이고 권장됨

bug_report.md

---
name: Bug Report
about: Report a reproducible bug in this project
title: "[Bug] "
labels:
  - bug
assignees:
  - dragonHyeon
  - dragonWorker
---

## 🐛 Bug Description

A clear and concise description of what the bug is.

## 🔁 Steps to Reproduce

1. Go to '...'
2. Click on '...'
3. See error '...'

## 🧠 Expected Behavior

What you expected to happen instead.

## 📸 Screenshots / Logs

If applicable, add screenshots or error logs to help explain your problem.

## 💻 Environment

- OS: [e.g. macOS 14, Windows 11]
- Browser / Runtime: [e.g. Chrome 120, Node.js 18]
- Version: [e.g. v1.2.3]

## 📝 Additional Context

Add any other context about the problem here.

feature_request.md

---
name: Feature Request
about: Suggest a new feature or improvement
title: "[Feature] "
labels:
  - enhancement
assignees: []
---

## 🚀 Feature Description

Clearly describe the new feature or enhancement you’re proposing.

## ✅ Use Case

Explain why this feature is needed and what problem it solves.

## 🔧 Suggested Solution

If you have an idea of how to implement it, describe it here.

## 💡 Alternatives Considered

Have you considered alternative solutions or workarounds?

## 📝 Additional Context

Add any other context or screenshots related to your request here.

question.md

---
name: Question
about: Ask a question or request clarification
title: "[Question] "
labels:
  - question
assignees:
  - dragonHyeon
---

## ❓ Question

Clearly state your question.

## 📚 What I’ve Tried

Briefly describe what you’ve tried or read before asking.

## 💬 Additional Context

Any additional information or code snippets that might help clarify your question.
  • YAML Front Matter 작성
    • name, about 필드 필수 작성 (내용 또한 비면 안됨)
      • name: 템플릿 이름 (템플릿 선택 UI에 표시됨)
      • about: 템플릿 설명 (템플릿 선택 UI에 표시됨)
    • title, labels, assignees 필수 필드는 아니지만 일반적
      • title: 기본 이슈 제목
      • labels: 자동으로 붙일 라벨 (배열 또는 문자열)
      • assignees: 자동 할당할 사용자 (배열 또는 문자열)
      • labels 와 assignees 작성 방식은 아래와 같음
        • 공백은 일반적으로 [] (빈 리스트) 로 표시
        • 단일 항목 혹은 여러 항목 지정시 일반적으로 - (블록 리스트) 방식으로 작성
        • 없는 항목 작성시 존재하는 항목만 적용되고, 존재하지 않는 항목은 조용히 무시됨

Issues 자동 닫기

Pull Request 의 본문 또는 커밋 메시지 안에 특정 키워드를 작성함으로써 GitHub 에서 이슈 자동 닫기가 실행됩니다. PR 이 main (또는 default branch) 에 병합될 때, main (또는 default branch) 에 merge 되는 커밋 메시지 안에 특정 키워드를 포함시키는 경우 이슈 자동 닫기가 실행됩니다. 키워드 #이슈번호 와 같은 형태로 작성하면 됩니다.

Fixes #123
Closes #123
Resolves #123
  • 지원되는 키워드 목록:
    • fix, fixes, fixed: 버그 수정
    • close, closes, closed: 기능 완료
    • resolve, resolves, resolved: 문제 해결
  • 실제 동작은 모두 이슈를 자동으로 닫는 것으로 동일
    • 명령어는 의미에 맞게 사용하는 것이 선호되며, 기술적으로는 아무거나 써도 이슈는 닫힘
  • fixes, closes, resolves 가 가장 선호되는 방식
    • 미래 지향적 의미를 담기 때문에 가장 선호되는 시제
  • 커밋 메시지를 통한 이슈 자동 닫기보다 PR 본문에서 이슈 자동 닫기가 더 선호되는 방식
  • 대소문자 구분 없음
  • Pull Request 본문 예시:
### Summary

Fixes the bug where the app crashes on login

### Related Issues

Fixes #101
Closes #102
  • 커밋 메시지 예시:
feat: add pagination support for post collection

- Collect posts across multiple pages until POST_COUNT is reached
- Change main loop to iterate pages and accumulate posts
- Ensure only the desired number of posts are processed

Closes #123

config.yml

GitHub 이슈 생성 화면에서 빈 이슈 허용 여부외부 링크 버튼 표시를 설정하는 파일입니다. .github/ISSUE_TEMPLATE/ 아래에 생성합니다.

blank_issues_enabled: true

contact_links:
  - name: ✉️ 추가 문의 (kyhps777@hanmail.net)
    url: https://github.com/dragonHyeon
    about: 템플릿에 포함되지 않은 문의 사항은 이메일로 연락해주세요.
  • config.yml 작성
    • blank_issues_enabled: 사용자가 빈 이슈 (Blank issue) 를 만들 수 있는지 여부 (작성하지 않을 경우 default 는 true)
    • contact_links: UI 하단에 링크로 표시될 외부 리소스나 FAQ 링크 등

코멘트 문화

  • 이슈 닫기 전 미리 댓글을 남기는게 일반적
이 이슈는 PR #45 에서 해결되었습니다.
PR 이 merge 되면 자동으로 닫힐 예정입니다. 감사합니다!
  • 자동 닫기 전에 댓글을 충분히 남겼다면, 닫힌 후에는 별도로 다시 댓글을 남기지 않는 경우가 많음
  • 자동 닫기 전에 까먹고 댓글을 안 남겼다면, 자동 닫기된 후에라도 댓글을 남겨주는 것이 매너
PR #45 가 merge 되면서 이슈가 자동으로 닫혔습니다.
문제는 해결되었으며, 다음 릴리스에 포함될 예정입니다. 감사합니다!
  • 코멘트 작성시 한 문장 끝나고 바로 이어 붙이는 형식보다는 한 문장마다 줄을 바꾸는 형식이 더 선호
    • 두 문장을 완전히 다른 주제로 쓰면 문장과 문장 사이에 빈 줄 삽입도 가능하지만 대부분의 경우 문단까지 나눌 필요는 없음
  • 마지막 줄에는 공백을 남기지 않음
  • 이슈 작성자 또는 관련자에게 직접 말하는 느낌을 줄 때 @username 언급을 사용 가능
    • 멘션 (@username) 라인과 본문 라인은 짧은 문장이더라도 분리하는 것이 일반적이고 권장되는 스타일
    • 여러명을 언급할 경우 한 줄에 여러명 나열
    • @멘션 위치는 문두에 하는 것이 일반적
@dragonHyeon @dragonWorker
[본문 내용]
728x90
반응형

'Dev > VCS' 카테고리의 다른 글

Git Flow 브랜칭 전략  (2) 2025.05.12
Git merge vs rebase  (2) 2025.05.12
GitHub PR Merge 옵션  (2) 2025.05.12
git fetch  (2) 2025.05.06
Git 브랜치 관리  (2) 2025.04.25