Nuke Olaf - Log Store
[Git] 깃허브 - fork 와 pull request 를 통한 협업 과정 정리 본문
1. 지금까지의 협업 방법 : Collaborator
지금까지는 깃허브를 통해 협업할때, 하나의 프로젝트 레포지토리에 Collaborator 를 추가한 다음, 각자의 브랜치를 만들고 자신의 브랜치에 직접 체크아웃하여 작업을 진행해 왔었다.
내가 nukeolaf, 협업하는 팀원이 friend 라고 가정했을때,
우리는 team 이라는 팀프로젝트용 깃허브 계정을 새로 만든 다음,
github.com/team/project 라는 레포지토리의 collaborator 에 nukeolaf 와 friend 를 설정하고,
각자이름의 브랜치를 만든 다음, 각자 브랜치에서 작업하고, pull request 와 merge 를 하는식으로 진행했다.
아래는 원래 진행하던 협업방식을 도식화한 그림이다.
이렇게 Collaborator 방식으로 협업을 진행했을 때는, Collaborator 들에게도 merge 권한이 있어서 각자 자신이 작업한 내용을 바로 merge 할 수 있어 신속한 피드백이 가능하다는 장점이 있었다.
그러나, 깃허브에 유료결제하지 않으면 collaborator 를 3명 이상 추가할 수 없다. 그리고 master 에 merge 할 수 있는 권한은 매우 중요한 것이기 때문에 여러명이 해당 권한을 갖고 있는것은 나중에 에러를 야기시키는 위험한 방법이 될 수 있다.
프로젝트의 소유자만이 merge 권한을 갖고, 다른 팀원들은 해당 브런치에 pull request 를 날리기만 할 수 있는 방법이 있다. 이 방법은 pull request 를 날릴 수 있는 사람의 수에 대한 제한도 없다. 바로 fork 를 통한 협업방식이다.
2. fork 를 통한 Contuributor 방식의 협업
fork 는 다른 사람의 프로젝트를 내 레포지토리에 복사+붙여넣기 하는 것이라고 생각할 수 있다.
아까 전의 상황으로 돌아가서 team 이라는 이름의 계정을 만들고 team/project 라는 레포지토리를 만들었다고 생각해보자. team/project 에는 아까와 동일하게 master, nukeolaf, friend 세 개의 브랜치가 존재한다.
이번에는 team/project 의 collaborator 에 팀원을 추가하지 않는다.
team/project 를 fork 하여 내 레포지토리로 가져온다.
그러면, nukeolaf/project 라는 레포지토리가 생기고,
team/project 의 내용이 nukeolaf/project 로 전부 복사된다.
그다음, 나는 nukeolaf/project 를 내 로컬 레포지토리에 clone 하고
nukeolaf 브랜치에서 작업을 진행하며 nukeolaf/project 에 작업내용을 push 한다.
그러다가 내가 작업한 내용을 team/project 에 반영하고 싶으면,
nukeolaf/project 의 nukeolaf 브랜치에서 team/project 의 nukeolaf 브랜치로 pull request 를 만들어준다.
해당 pull request 를 merge 할 수 있는 권한은 나에게는 없으며,
merge 는 team 계정으로만 진행한다.
이렇게 프로젝트를 내 레포지토리에 fork 하여 협업하는 방식에 대해 알아보았다.
다시 간단히 정리해보자면,
collaborator 방식은 해당 레포지토리에 대해 프로젝트 관리자가 가질 수 있는 권한을 모두 가질 수 있는것
fork 와 pull request 방식은 내 레포지토리로 가져와서 작업하고 pull request 를 날리기만 할 수 있는것. (이때 내가 날린 pull request 가 merge 되면 내가 contributor 가 된것임)
깃은 공부할수록 정말 재밌는 것 같다.
참고 사이트 >>>
'Git' 카테고리의 다른 글
[Git] 깃 - 프로젝트 fork 해서 작업하는 방법 (0) | 2020.03.31 |
---|---|
깃허브란 무엇인가? (0) | 2020.01.06 |