[Git] GitHub로 협업하기 - Forking Workflow

hyowon·2021년 10월 3일
21

Forking Workflow

  • 팀장의 저장소를 Fork해서 팀원마다 각자 저장소를 가지고 프로젝트를 진행하는 방식이다.
  • 팀원은 각자의 저장소를 가지고있기때문에 자유롭게 작업이 가능하다.
  • 팀원의 작업 내용은 Pull requests를 통해 팀장의 확인 후 반영된다.
  • 팀장 저장소의 권한은 팀장만 가지고 있으면서 다른 사람의 커밋을 프로젝트에 적용이 가능하다.
  • 팀장이 코드를 확인하고 머지하기 때문에 안전하게 협업이 가능하다.
  • 오픈소스프로젝트에서 많이 사용하는 방식이다.

Gitflow Workflow

Forking Workflow는 일반적으로 Gitflow Workflow를 기반으로 하는 분기 모델을 따른다.
Gitflow를 간단히 설명하자면 5가지의 브랜치로 프로젝트를 관리하는 것이다.

master : 제품으로 출시될 수 있는 브랜치
develop : 다음 출시 버전을 개발하는 브랜치
feature : 기능을 개발하는 브랜치
release : 이번 출시 버전을 준비하는 브랜치
hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치

여기에서 git-flow 설치와 주요 명령을 볼 수 있다.

협업하는방법

1. 팀장이 저장소를 만들고 프로젝트 설정

팀장이 저장소를 만들고 로컬에 clone 한다.
git clone {repo address}
git flow init 을 통해 git flow를 사용하기위한 초기화를 해준다.

git flow에 필요한 브랜치가 생성이 되고 main 브랜치에서 자동으로 develop 브랜치로 이동하게 된다.

이 상태에서 원격저장소에 push를 한다.
git push -u origin develop

2. 팀원이 Fork

main 브랜치와 develop 브랜치가 있는 상태에서
팀장의 원격저장소를 가서 Fork 버튼을 누른다.
그러면 팀장의 원격저장소가 복사되어 팀원의 원격저장소가 생긴다.

팀원도 동일하게 자신의 원격저장소를 로컬에 clone하고
git flow init 을 해준다.

3. Issues에 각자 담당할 일을 등록

팀원은 작업하기 전에 팀장의 원격저장소의 Issues에 각자 담당할 일을 등록한다.

팀장은 Projects에서 Create a project 버튼을 클릭해서 Project를 만든다.

이때 템플릿을 선택할 수 있는데 Automated kanban를 선택하면 To Do, In Progress, Done 컬럼이 생성되고 이슈를 진행상황에 따라 확인 할 수 있다.

팀원이 등록한 이슈를 확인하고 Assignees, Labels, Projects 등을 지정해준다.


4. 각자 맡은 기능을 개발하고 개인저장소에 Push

git flow feature start 브랜치명 으로 기능에 따라 브랜치를 새로 생성해서 개발한다.

커밋은 의미있는 단위이면서 정상적으로 동작하는 단위로 커밋한다.

기능 개발이 끝나면 git flow feature finish 브랜치명 명령을 입력하면 해당 브랜치를 develop 브랜치에 머지하고 삭제를 해준다.

git push -u origin develop 로 자신의 원격 저장소로 push한다.

5. Pull requests 생성

자신의 원격 저장소로 push 하고나면 Compare & pull request 버튼이 생기는 것을 볼 수 있다.

이 버튼이 생기지 않아도 Pull request로 직접 들어가서 생성이 가능하다.

❗️ 팀원의 develop 브랜치에서 팀장의 develop 브랜치로 보내야한다.

6. 팀장 코드 리뷰 및 Merge

팀장은 풀리퀘스트를 통해서 팀원이 작업한 내용을 볼 수 있고
Files changed 에서 코드리뷰를 할 수 있다.

원하는 위치에 +를 누르면 코멘트를 추가할 수 있다.

수정사항이 없으면 Approve 를 선택하고 Finish your review 를 누르면 된다.

수정이 필요한 경우에는 Request changes 를 선택한다.

풀리퀘스트가 머지되기 전에는 팀원이 수정해서 푸시한게 자동으로 풀리퀘스트에 반영되기때문에 또 풀리퀘스트를 생성하지 않아도 된다.


Resolve converstion 를 누르면 대화가 접힌다

Merge pull request 를 누르고 Confirm merge 를 누르면 현재 풀리퀘스트가 팀장의 develop 브랜치에 반영된다.

7. Pull 하기

팀장의 로컬 저장소를 최신화 하기 위해서 git pull origin develop 을 해준다.

다른 팀원은 팀장의 원격저장소의 내용을 pull 해야되기때문에 git pull upstream develop 을 해줘야한다.

이때 환경에 따라서 upstream이 자동으로 추가되지 않을 수 있다.

git remote -v 로 upstream이 등록돼있는지 확인한다.

origin만 있는 경우에는

git remote add upstream {팀장 원격저장소 주소} 를 통해 upstream을 등록해주면된다.


참고

0개의 댓글