HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🙂
달리팀 노션
/
👨🏻‍💻
달리 2팀 (deprecated 문제 없으면 삭제 예정)
/
Github 협업 매뉴얼
Github 협업 매뉴얼
Github 협업 매뉴얼

Github 협업 매뉴얼

Github PR 협업 플로우 (fork 버전)저장소 가져오기작업하기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#7-1 PR 올린 브랜치의 커밋 히스토리를 변경(ex. squash)하고 싶을 때Step#8 머지 완료된 브랜치 정리하기Github 협업 매뉴얼 (fork 없이 공통계정 저장소 사용)Git 커밋 규칙See also

Github PR 협업 플로우 (fork 버전)

💡
211115 주요 변경 사항 현재 upstream 리모트 이름 → origin으로 변경하였습니다. (이유: 프로젝트 상황에 의하여 공통 계정 원격 저장소로 관리하기 때문) 따라서 위에 유념하며 따라하시기를 권장합니다.

저장소 가져오기

  1. [@GITHUB] 공통 계정(ex. organization) 원격 저장소(Github repository)를 fork를 한다
    1. 공통 계정 원격 저장소는 upstream이라고 부른다
    2. 개인 계정으로 가져온 원격 저장소는 origin이라고 부른다
  1. 개인 원격 저장소를 로컬에 클론한다
  1. 레포를 연결하기 위해 upstream과 origin을 설정한다
  1. 원격 저장소 데이터 가져오기

작업하기

💡
이 부분은 fork하기로 했을 때 이해를 돕기 위한 설명입니다. 현재는 생략합니다 - 재영
notion image
💡
TL;DR: 1. 로컬에서 작업한 내용을 origin에 push 한다. 2. origin에 올라온 내용을 upstream으로 PR을 보낸다.

Step#1 무엇을 작업할지 이슈를 등록한다

notion image

Step#2 upstream/develop 브랜치에서 이슈 번호(ex. MGC-1)로 feature 브랜치를 만든다

Step#3 원격 저장소의 최신 상태를 로컬에 반영한다

Step#4 작업을 하고 커밋을 남긴다

Step#5 작업을 푸시하기 전에 Step#3을 반복한다

현재 브랜치의 작업이 길어졌을 경우, 그동안 upstream/develop이 업데이트 되었을 수도 있다. 이때 브랜치를 푸시하기 전에 이력이 꼬이지 않도록 최신 상태를 로컬에 반영한다.

Step#6 작업이 끝난 피쳐 브랜치를 origin에 push 한다

Step#7 origin에 push 된 내용을 토대로 upstream에 PR을 올린다

💡
양식: 1. MGC-이슈번호 커밋내용 2. 이슈 번호 써주고 / 오른 쪽에서 이슈 같이 달아주기
notion image

Step#7-1 PR 올린 브랜치의 커밋 히스토리를 변경(ex. squash)하고 싶을 때

Step#8 머지 완료된 브랜치 정리하기

Github 협업 매뉴얼 (fork 없이 공통계정 저장소 사용)

Git 커밋 규칙

이슈 레이블:
  • feat
  • refactor
  • fix
  • docs
  • chore
  • style

See also

  • 팀 단위로 코드 리뷰 지정하기
  • 키워드를 이용해서 PR과 이슈 연결하기
  • 헤이딜러 개발팀의 PR 관리 방법 7가지
 
notion image
 
git clone <개인 계정 원격 저장소 주소>
# 원격 저장소 정보 자세히 보기 (-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
# upstream/develop 브랜치에서 새 피쳐 브랜치를 만든다 (-c: create) git switch -c MGC-1 upstream/develop # 참고: 브랜치 이름 변경하기(from: MGC-1 to: MGC-4) git branch -m MGC-1 MGC-4
git fetch upstream && git rebase upstream/develop git l --all
git add . git commit -m "MGC-이슈번호 내용" # 예시: MGC-8 인증 스레드 알람 추가
git fetch upstream && git rebase upstream/develop
git push <레포지토리 리모트> <작업한-브랜치>
# 예시 git graph * 3fd0f11 - (HEAD -> test-branch) MGC-100 사소한 컨벤션 수정 * af30d1b - MGC-100 리드미 문서 추가 # 위 두 개 커밋을 합치고 싶다! 사소한 컨벤션 수정 커밋을 남기고 싶지 않아! git rebase -i HEAD~2 # 출력 화면 1 pick af30d1b MGC-100 리드미 문서 추가 # 더 오래된 커밋 2 pick 2032543 MGC-100 사소한 컨벤션 수정 # 최근 커밋 3 4 # Rebase 7587ceb..2032543 onto 7587ceb (2 commands) 5 # 6 # Commands: 7 # p, pick <commit> = use commit 8 # r, reword <commit> = use commit, but edit the commit message 9 # e, edit <commit> = use commit, but stop for amending 10 # s, squash <commit> = use commit, but meld into previous commit # 위 화면에서 2번째 커밋 pick을 squash로 바꾼다 1 pick af30d1b MGC-100 리드미 문서 추가 2 squash 2032543 MGC-100 사소한 컨벤션 수정 # 커밋 메시지 새로 작성하는 화면 (두개 커밋을 합치니까 새로운 커밋을 생성해야 하기 때문에) 1 # This is a combination of 2 commits. 2 # This is the 1st commit message: 3 4 MGC-100 리드미 문서 추가 5 6 # This is the commit message #2: 7 8 MGC-100 사소한 컨벤션 수정 # 원하는대로 수정 1 MGC-100 리드미 문서 추가 # rebase 결과 ❯ git rebase -i HEAD~2 [detached HEAD 8226233] MGC-100 리드미 문서 추가 Date: Fri Oct 22 18:10:22 2021 +0900 2 files changed, 7 insertions(+), 1 deletion(-) Successfully rebased and updated refs/heads/test-branch. # PR에 이미 올라간 히스토리를 변경해서 push할 것이기 때문에 --force push를 한다(초보자는 --force 금지) git push <remote> <current-branch> --force
# 머지가 완료된 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-[이슈번호]
not yet written
MGC-8 인증 스레드 알람 추가