Github의 협업절차 예시

kangjuju·2023년 6월 1일
0

GIT

목록 보기
1/1
post-thumbnail

간단한 Github 협업 절차 이해를 위해 Branch 네이밍 규칙은 생략하고 2개로 한정했습니다.

git 용어


  • branch (브랜치)

    • Git에서 개발 작업을 분리하고 독립적으로 진행하기 위한 개념

    • Master branch와 Sub branch를 분리하는 이유는 안정성 유지, 동시 작업 가능성, 기능 개발과 병합, 코드 검토 등의 이점을 얻기 위해서이다.

    • 안정성을 위해 완전히 테스트되고 검증된 코드가 포함되어야 함.

  • push

    • 로컬 저장소의 변경사항을 원격 저장소로 전송. 즉, 로컬에서 작업한 커밋들을 원격 저장소로 업로드하여 다른 개발자들과 코드를 공유하게 됨
  • pull

    • 원격 저장소의 변경사항을 로컬 저장소로 가져온다. 즉, 원격 저장소에 있는 다른 개발자들의 커밋들을 로컬로 다운로드하여 업데이트된 코드를 가져올 수 있다.
  • staging (스테이징) git add .

    • 스테이징은 Git에서 변경된 파일들을 커밋에 포함시킬 준비 단계를 의미. Git은 파일의 변경사항을 추적하는 단계적인 과정을 거친다.
  • commit (커밋)

    • 커밋은 Git에서 변경사항을 저장하는 작업을 의미. 커밋은 파일의 상태를 저장하는 스냅샷이며, 변경사항의 기록으로 이루어진 커밋 히스토리를 형성

협업 절차


팀장과 팀원1,팀원2가 있다고 가정했습니다.

요약 : 팀장이 개설 -> 팀원1 변경점 반영 -> 팀원2 변경점 반영

  1. 프로젝트 개설
    팀장이 프로젝트 레포지토리를 개설하고, 초기 코드를 master branch에 커밋하고 push합니다. 항상 커밋 이전엔 git add . 로 스테이징 영역에 변경점을 추가합니다.
# 레포지토리 클론
git clone <레포지토리 URL>

# 작업 디렉토리로 이동
cd <레포지토리 이름>

# 초기 코드 커밋
git add .
git commit -m "Initial commit"
git push origin master
  1. sub branch 개설
    협업을 위해 팀장은 sub branch를 만듭니다.
# sub branch 생성 및 이동
git checkout -b <sub branch 이름>
  1. 각 팀원의 clone
    각 팀원들은 clone 으로 master branch의 초기코드를 받아 각자 작업을 합니다.
#작업할 디렉토리로 이동
cd <작업디렉토리> 

#원격 저장소의 코드를 로컬로 복제
git clone <원격저장소주소> 
  1. 팀원1의 commit
    팀원1은 자신의 작업 내용(변경점)을 sub branch에 커밋합니다.
# 변경된 파일 스테이징
git add .

# 커밋
git commit -m "팀원1 작업 내용 커밋"
  1. 병합
    팀장은 팀원1의 커밋 내용을 확인하고, sub branch를 master branch로 병합(merge)합니다.
# master 브랜치로 이동
git checkout master

# sub branch를 master 브랜치로 병합
git merge <sub branch 이름>

# 원격 저장소에 업로드
git push origin master
  1. 팀원2의 pull

    • 팀원2는 작업 중이던 내용이 있는 상태에서, 팀원1의 변경점이 적용된 master branch를 pull로 최신 프로젝트를 받아옵니다.

    • 이 작업은 팀원1의 커밋을 기준으로 팀원2의 변경 사항을 추가하므로, 팀원2의 코드가 사라지지 않습니다.
      Git은 변경 사항을 결합하고 충돌이 발생할 경우 이를 알려줍니다.

    • 위의 과정(pull) 을 거치지 않으면 원격 저장소에 있는 새로운 commit 내역은 팀원2의 pc에는 존재 하지 않기 때문에 rejected 에러가 발생할 수 있습니다.

# master 브랜치로 이동
git checkout master

# 최신 변경 사항 가져오기
git pull origin master
  1. 팀원2의 commit
    팀원2는 자신의 변경점을 sub branch에 커밋합니다.
    이때, 팀원1의 변경점과 팀원2의 변경점이 함께 포함된 코드가 sub branch에 저장되는 것입니다.
# 변경된 파일 스테이징
git add .

# 커밋
git commit -m "팀원2 작업 내용 커밋"
  1. 팀장의 병합
    팀장은 팀원2의 커밋을 확인하고, 문제가 없다고 판단하면 sub branch를 master branch로 병합(merge)합니다. 이를 통해 master branch에 팀원1과 팀원2의 변경점이 함께 반영됩니다.
# sub branch로 이동
git checkout <sub branch 이름>

# sub branch를 master 브랜치로 병합
git merge master

# 원격 저장소에 업로드
git push origin master

pull request로 push한 branch merge하기


push한 브랜치는 pull request를 통해 병합해야 원격 저장소에 반영이 됩니다.

  1. branch 설명 옆에 New pull request를 클릭합니다.

  2. 풀 리퀘스트에 대한 메세지를 작성 한 후 Create pull request를 누르면 협업중인 저장소에 풀 리퀘스트가 전송됩니다.

  1. 협업중인 원격 저장소에 등록된 풀 리퀘스트는 공동 작업자 중 누구나 병합할수 있습니다.
    저장소 파일 목록 위의 Pull request를 누르면 등록된 풀리퀘스트 목록이 나옵니다.

  2. 풀 리퀘스트 메세지를 살펴본 다음 이상이 없으면 Merge pull request를 누럴 병합합니다.
    필요하다면 이 공간을 통해 풀 리퀘스트를 남긴 사람과 메시지를 주고 받을수도 있습니다.

  1. 커밋 메시지를 직접 입력하거나 기본메세지를 사용할수 있습니다. Confirm merge 버튼을 누르면 브랜치 병합이 마무리됩니다.
  1. 브랜치가 병합되면 해당 브랜치에 있던 파일이 master 화면에 나타납니다. 브랜치 상태를 알고 싶다면 파일 목록 위에 있는 '2 branches'를 눌러주세요.
  1. 브랜치가 병합된 상태라면 'merged'라고 표시되어 있습니다. 또한 어떤 협업자가 브랜치를 병합했는지도 알수 있습니다.

  2. 깃허브에서 협업을 할 때는 보통 작업자 마다 브랜치를 만들어서 진행하고, 작업 중간중간 풀리퀘스트를 보내서 master 브랜치에 병합합니다. 그래서 깃허브로 협업을 할 때는 다른 작업자의 변경 내용을 바로 반영하기 위해 항상 pull을 먼저 당긴후에 자신의 작업을 진행하는 것을 권장합니다.

reference : [Git & GitHub] 협업하기

0개의 댓글