Loading...
태그
    github issuegithub 협업

github issue 활용과 협업방법

최종수정일
2026년 01월 09일
6분걸림
작성자: Techy J
Table of Content (목차)

github에 저장된 코드나 문서는 bug fix, docuemnt 개선, feature 추가, refactoring, 새로운 논의 제기, 업데이트 등 유지보수가 필요 있다. github issue 기능을 이용해서 관리하면 된다.

github issue 의 이슈관리 방법

github issue에 이슈를 등록만 하는 것이 아니라. 이슈를 해결하기 위한 작업 브랜치에서 완료한 commit에 기존 이슈로 연결 설정을 추가하면, push 시 연결할 수 있다. 또한 작업 브랜치를 main 브랜치로 통합을 요청하는 pull request 도 기존 이슈와 연결하도록 설정할 수 있다. 이런 연결을 통해 github issue 화면이나 CLI 명령으로 이슈와 관련된 진행현황을 한 눈에 볼 수 있다. 또한, 최종적으로 pr merge 가 완료되면 이슈가 자동 close 되도록 commit 이나 pull request 에 설정을 추가할 수 있다. github 의 GUI 보다, gh CLI 를 사용하는 것이 편리하다.

전체 workflow 요약

# 원격 리포지토리 생성 및 push
gh repo create <github_리포지토리_이> --private --source=. --remote=origin --push
 
# issue에서 사용할 label 등록
gh label create '기간:단기' --description "단기작업" --color "FF0000"
 
# issue 생성
gh issue create --title "제목" --body "이슈설명" --label "기간:단기"
 
# issue 작업용 branch 생성
git checkout -b issue-<이슈번>
 
# 코드 수정 
 
# 커밋 메시지에 (#<이슈번호>을 추가하면 커밋을 issue 와 연결 설정
# closes #<이슈번호>가 있으면 pr merge 완료시 issue가 자동 종료
git add .
git commit -m 'issue #<이슈번호>'
git commit -m 'issue #<이슈번호>, closes #<이슈번호>'
 
# 예
git commit -m "readme.md 파일 업데이트 for issue-#1"
 
# push 하면 issue에 commit이 연결 완료됨
git push -u origin issue-<이슈번>
 
# PR 생성 
# Closes #<이슈번호>가 있으면 pr merge 완료 시 issue 자동 종료
gh pr create --title "pr #<이슈번호>" --body "Closes #<이슈번호>"
 
# PR 번호 확인
gh pr list
 
# PR merge
# 작업 branch 삭제 여부를 선택가능, 위에서 closes 설정한 경우는 issue 자동삭제
gh pr merge <PR>

gh CLI 설정

gh 설치 및 github 연동

gh 를 설치 하고, github 계정에 인증하면 연동된다.(HTTPS, SSH 무관) 과정 중에 화면에 보이는 one-time code 를 입력하면 된다.

gh auth login

github 리포지토리 생성 및 remote 연결

로컬에 .git 폴더와 commit 이 없으면 로컬 리포지토리 생성과 커밋을 차례로 실행해서 리포지토리에 push 할 준비를 한다.

mkdir <작업폴> && cd <작업폴>
git init
 
# 파일 생성 등 작업 수행
 
git add .
git commit -m 'init'

아래의 명령으로 리포지토리 생성, git remote add, origin main, git push가 완료된다.

gh repo create <github상의 리포지토리_이> --private --source=. --remote=origin --push

Issue를 분류하는 labels

이슈를 만들기 전에 label을 등록할 수 있다. 이슈 생성 시 지정할 label은 미리 등록되어 있어야 한다. labels는 github issues 를 분류하는 필터로 사용한다.

gh label create '기간:단기' --description "단기작업" --color "FF0000"
gh label create '기간:중기' --description "중기작업" --color "00FF00"
gh label create '기간:장기' --description "장기작업" --color "0000FF"
  • 기본 등록되어 있는 labels: bug, documentation, duplicate, enhancement, good first issue, help wanted, invalid, question, wontfix
  • labels를 삭제할 때는 --yes 옵션을 사용한다.
gh label delete "기간:만기" --yes             
  • 현 리포지토리의 labels 목록보기
gh label list

issue 생성, 수정, 종료

이슈는 title, body, label 로 구성되고, 그외에 assignee 나 milestone 지정도 할 수 있다.

Issue 생성

gh issue create 로 대화형으로 이슈를 생성할 수도 있다.

gh issue create --title "<제목>" --body "<본문>" --label "<레이블1>,<레이블2>"
  • github issue 생성 완료 화면 github issue 화면 (issue opened)- github issue 화면 (issue opened) -
  • 이슈 생성 명령 예
gh issue create \
  --title "[기능] 기능1 구현" \
  --body "$(cat <<'EOF'
## 설명
이것은 isssue에 대한 설명입니다.
## 작업 유형
- [x] Device Drvier
- [ ] 응용프로그램
 
## 완료 조건
- [ ] 첫번째 완료 조건
- [ ] 두번째 완료 조건
 
## 제약사항
- NDD 드라이버 모델을 사용
EOF
)" \
  --label "작업:기능,유형:Device Driver,기간:단기"

issue 수정

이미 생성한 이슈번호를 이용해서 수정할 수 있다.

gh issue edit #<이슈번호>

개별 issue 조회

json 등 원하는 형태로 조회할 수 있다.

# JSON 형식으로 조회
gh issue view <이슈번> --json number,title,body,labels
 
# 웹 브라우저에서 열기(github)
gh issue view <이슈번> --web
 
# 터미널에서 읽기 쉬운 형식으로 조회
gh issue view <이슈번>

Issue 전체 목록 조회

# 열려있는 모든 이슈목록
gh issue list
 
# 나에게 할당된 이슈  
gh issue list --assignee @me
 
# 특정 레이블로 분류된 이슈 
gh issue list --label "기간:단기"
 
# 닫힌 이슈 포함 조회
gh issue list --state all

기타 Issue 명령어

# 이슈 종료
gh issue close <이슈번>
 
# 이슈 다시 열기
gh issue reopen <이슈번>
 
# 이슈에 코멘트 추가(코멘트 마크와 함께 보여짐)
gh issue comment <이슈번> --body "작업 중입니다"

Issue 에 연결된 Branch 생성

이슈를 작업할 공간인 브랜치를 생성한다. 브랜치 이름에 이슈번호를 지정하면 관리가 용이하다.

# 권장: issue-<NUMBER>
git checkout -b issue-<이슈번>
 
# 가능: <NUMBER>-feature-name
git checkout -b <이슈번>-add-user-fn
 
# 가능: feature/issue-<NUMBER>
git checkout -b feature/issue-<이슈번>

commit 메시지에서 Issue 와 연결

작업을 완료한 후 커밋 메시지에 #<이슈번호> 를 추가해서 Issue와 연결하도록 설정하면, push 시 연결이 완료되면 해당 Issue 에 커밋이 표시된다.

# 양식
git commit -m "Update user profile for #<이슈번호>"
 
# 예
git commit -m "Update user profile for #3"

또한, 여러 이슈를 하나의 커밋으로 연결하는 것도 가능하다.

# 여러 Issue 참조
git commit -m "Update features for #<이슈번호1>, #<이슈번호2>, #<이슈번호3>"
 
# 여러 Issue 종료
git commit -m "feat: 기능1 구현
 
Closes #<이슈번호1>
Closes #<이슈번호2>
Closes #<이슈번호3>"

커밋 메시지에 Closes #<이슈번호>, Fixes #<이슈번호>, Resolves #<이슈번호> 를 사용하면, pr merge 가 완료될 때 이슈가 자동 종료된다.

git commit -m "feat: 기능1 구현
 
Closes #<이슈번호>"
  • commit 메시지 예
git commit -m "$(cat <<'EOF'
<타입>: <제목>
<본문>
작업 내용설명 
주요 변경사항: 
- 
  
구현 내용:
- 
  
테스트: 
- 
  
Closes #<이슈번호>
 
<푸터>
EOF
)"

원격 저장소 Push

브랜치 issue-<이슈번호>를 github에 push 하면 이슈에 커밋이 연결된다.

# commit 예 
# git commit -m "readme.md 파일 업데이트 for issue-#1"
 
# push
git push -u origin issue-<이슈번>
  • github push 와 issue가 연결된 화면 github issues 화면 (추가된 commit 과 연결)- github issues 화면 (추가된 commit 과 연결) -
  • 브랜치를 삭제해야할 경우
# 원격 브랜치 삭제
git push origin --delete issue-<이슈번>
 
# 로컬 브랜치 삭제 
# 주의: -D는 merge되지 않은 경우도 삭제, 수정사항 유지 안됨
git branch -D issue-1

Pull Request 생성

Issue에 대한 작업 결과가 들어 있는 브랜치를 main 브랜치로 merge를 요청하는 것이 Pull Request 다. gh pr create 명령의 --body 옵션 값에 Closes #<이슈번호>, Fixes #<이슈번호>, Resolves #<이슈번호> 를 추가하면, PR과 issue가 연결되고 PR merge 요청이 완료될 때 Issue 도 자동 종료된다.

연결만 하고 merge 가 완료시 issue의 자동종료를 원하지 않으면 --body 옵션에 Related to #<이슈번호>, Ref #<이슈번호>, See #<이슈번호>, Part of #<이슈번호> 를 사용한다. 이런 연결 키워드가 없으면 단순 merge로 취급된다.

--base를 생략하면 main 브랜치로 자동 설정되고, --head를 생략하면 현재 브랜치issue-<이슈번호>로 자동 설정되며, --body를 생략하면 에디터가 열리거나 기본 템플릿 사용한다.

gh pr create --title "title" --body "body"
  • 생성된 github pull request 가 issue와 연결된 화면 github issues 화면 (pull request 링크)- github issues 화면 (pull request 링크) -
  • issue 번호가 3번인 경우
gh pr create \
  --base main \
  --head issue-3 \
  --title "feat: 기능1 구현 (#3)" \
  --body "$(cat <<'EOF'
## Summary
Issue #3을 해결하기 위한 기능1 구현
 
## 구현 내용
- 기능1-1 구현
- 기능1-2 구현
- 테스트 (100% 커버리지)
 
Closes #3
EOF
)"

PR 요구가 발생하면 코드리뷰를 진행하고 merge 여부를 결정 내려야 한다.

PR merge 및 issue 종료

Pull Request 번호를 지정해서 gh pr merge를 진행 한다. PR 번호는 gh pr list 으로 확인할 수 있다. gh pr merge는 main 브랜치로 merge 한다. 과정 중에 이슈 브랜치의 삭제 선택할 수 있다. merge가 완료되면 PR은 종료 되지만, Issue는 commit 이나 PR 생성 시 설정에 따라 종료 또는 유지된다.

# Pull Request 번호 확인
gh pr list
 
# merge 진행
gh pr merge <Pull Request번>
 
# 예
gh pr merge 3

merge와 함께 issue가 종료되면 issues 탭과 Pull requests 탭의 카운트가 없어진다.(0값)

  • pr merge 완료 후 github issue 화면 github issue 화면(issue closed)- github issue 화면(issue closed) -

(끝)

이 글은 ' 출처: 변호사 전정숙 '과 ' 원본링크: https://www.korean-lawer.com/articles/git/github-issue-활용-협업-방법'를 명시하는 조건으로 인용가능 합니다.
무단 복제, AI 학습 목적으로의 사용과 Google, Naver의 Indexing 외 크롤링 금지합니다
About
전정숙 변호사
법무법인 정맥 파트너 변호사부산파산법원 파산관재인전) 부산변호사회 부회장전) 전국여성변호사회 부회장전) 부산 가정법원 조정위원
Contact

(82) 051-916-8582 , 051-916-8583

부산광역시 연제구 법원로 12 (거제동)

로윈타워빌딩 2층 법무법인정맥

변호사 전정숙

© 2005-2026 전정숙 변호사.

All Rights Reserved.