Nuke Olaf - Log Store

[Git] 깃허브 - fork 와 pull request 를 통한 협업 과정 정리 본문

Git

[Git] 깃허브 - fork 와 pull request 를 통한 협업 과정 정리

NukeOlaf 2020. 3. 31. 00:10

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 가 된것임)

 

깃은 공부할수록 정말 재밌는 것 같다.

참고 사이트 >>>

https://blog.outsider.ne.kr/865

https://velog.io/@imacoolgirlyo/Git-fork%EC%99%80-clone-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-5sjuhwfzgp

http://guruble.com/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%9D%98-%EC%BB%A8%ED%8A%B8%EB%A6%AC%EB%B7%B0%ED%84%B0%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%90%98%EB%8A%94-%EA%B2%83/

https://hyoje420.tistory.com/41

'Git' 카테고리의 다른 글

[Git] 깃 - 프로젝트 fork 해서 작업하는 방법  (0) 2020.03.31
깃허브란 무엇인가?  (0) 2020.01.06
Comments