Github PR 협업 플로우저장소 가져오기작업하기Step#1 무엇을 작업할지 이슈를 등록한다Step#2 upstream/develop 브랜치에서 이슈 번호(ex. MGC-1)로 feature 브랜치를 만든다Step#3 원격 저장소의 최신 상태를 로컬에 반영한다Step#4 작업을 하고 커밋을 남긴다Step#5 작업을 푸시하기 전에 Step#3을 반복한다Step#6 작업이 끝난 피쳐 브랜치를 origin에 push 한다Step#7 origin에 push 된 내용을 토대로 upstream에 PR을 올린다Step#8 머지 완료된 브랜치 정리하기Git 커밋 규칙See also
Github PR 협업 플로우
저장소 가져오기
- [
@GITHUB
] 공통 계정(ex. organization) 원격 저장소(Github repository)를 fork를 한다 - 공통 계정 원격 저장소는
upstream
이라고 부른다 - 개인 계정으로 가져온 원격 저장소는
origin
이라고 부른다
- 개인 원격 저장소를 로컬에 클론한다
git clone <개인 계정 원격 저장소 주소>
- 레포를 연결하기 위해
upstream
과origin
을 설정한다
# 원격 저장소 정보 자세히 보기 (-v: verbose) git remote -v # 원격 저장소 설정하기 git remote add upstream <공통 계정 원격 저장소 주소> # 설정 완료 예시 git remote -v origin git@github.com:datalater/dali2-test.git (fetch) origin git@github.com:datalater/dali2-test.git (push) upstream git@github.com:daliteam/dali2-test.git (fetch) upstream git@github.com:daliteam/dali2-test.git (push)
- 원격 저장소 데이터 가져오기
git fetch origin git fetch upstream # 또는 모든 리모트 데이터 한번에 가져오기 git fetch --all # 잘 가져왔는지 확인 (git l 명령어는 alias 등록해야 한다) git l --all
작업하기

TL;DR:
1. 로컬에서 작업한 내용을 origin에 push 한다.
2. origin에 올라온 내용을 upstream으로 PR을 보낸다.
Step#1 무엇을 작업할지 이슈를 등록한다

Step#2 upstream/develop 브랜치에서 이슈 번호(ex. MGC-1
)로 feature 브랜치를 만든다
# upstream/develop 브랜치에서 새 피쳐 브랜치를 만든다 (-c: create) git switch -c MGC-1 upstream/develop # 참고: 브랜치 이름 변경하기 git branch -m MGC-1 MGC-4
Step#3 원격 저장소의 최신 상태를 로컬에 반영한다
git fetch upstream && git rebase upstream/develop git l --all
Step#4 작업을 하고 커밋을 남긴다
git add . git commit -m "MGC-이슈번호 내용" # 예시: MGC-8 인증 스레드 알람 추가
Step#5 작업을 푸시하기 전에 Step#3을 반복한다
현재 브랜치의 작업이 길어졌을 경우, 그동안 upstream/develop이 업데이트 되었을 수도 있다. 이때 브랜치를 푸시하기 전에 이력이 꼬이지 않도록 최신 상태를 로컬에 반영한다.
git fetch upstream && git rebase upstream/develop git pull = git fetch && git merge => 3 way merge => merge 커밋 git pull --rebase develop
Step#6 작업이 끝난 피쳐 브랜치를 origin에 push 한다
git push origin <작업한-브랜치>
Step#7 origin에 push 된 내용을 토대로 upstream에 PR을 올린다
양식:
1. MGC-이슈번호 커밋내용
2. 이슈 번호 써주고 / 오른 쪽에서 이슈 같이 달아주기

Step#8 머지 완료된 브랜치 정리하기
# 머지가 완료된 develop 브랜치의 최신 코드를 반영한다 git switch develop git fetch upstream && git rebase upstream/develop # origin 원격 저장소에도 develop 반영한다 git push origin develop # 작업이 완료된 브랜치를 삭제한다 # -- merge 이후 안전하게 삭제 git branch -d MGC-[이슈번호] # -- squash and merge 이후 강제로 삭제 git branch -D MGC-[이슈번호] # 로컬에 남아 있는 원격 저장소 브랜치 삭제하기 # -- origin에서 이미 브랜치 삭제한 경우 로컬에 반영하기 git remote prune origin # -- origin에 올라간 브랜치 삭제하기 git push origin :MGC-[이슈번호]
Git 커밋 규칙
MGC-8 인증 스레드 알람 추가
이슈 레이블:
- feat
- refactor
- fix
- docs
- chore
- style