github 에서 팀 프로젝트를 위해서 팀장이 레포지토리를 생성하고 팀원을 참여자로 추가한다. 그리고 팀원은 fork 를 통해서 클론해서 프로젝트에 참여 작업을 이어 나갈 수 있다.
![](https://www.dataschool.io/content/images/2014/Mar/github1.png)
레포지토리 생성 (팀장)
![](https://i.imgur.com/njEUbNe.png)
참여자 관리 (팀장)
프로젝트 레포지토리에 팀원을 추가해 준다. 레포지토리 Settings 에서 Collaborators 페이지에서 참여자를 관리할 수 있다.
![](https://i.imgur.com/BIuUSdz.png)
Collaborator 에 추가할 github 사용자를 검색
![](https://i.imgur.com/l3LBGsF.png)
Collaborators 추가 사용자 목록
![](https://i.imgur.com/Ei9zjF7.png)
참여자 알림 확인
사용자는 알림에 Collaborator 에 추가되어 허용할지를 등록
![](https://i.imgur.com/SqXXmim.png)
요청받은 collaborator 을 받아들인다
![](https://i.imgur.com/jwmsa1Q.png)
Fork & Pull Request, Merge
깃헙을 통해 프로젝트를 수행한다면 레포지토리 fork, pull-request, commit 을 통해서 여러 참여자/기여자의 코드를 동기화 할 수 있다.
https://www.tomasbeuzen.com/post/git-fork-branch-pull/
팀장이 공유할 레포지토리를 만든다
![](https://i.imgur.com/njEUbNe.png)
팀원이 프로젝트 레포지토리를 fork 한다
![](https://i.imgur.com/Ka8YA2O.png)
fork 하는 레포지토리 정보를 입력한다
![](https://i.imgur.com/NrntrqA.png)
포크한 레포지토리에 새 파일을 추가한다.
팀원 레포지토리로 포크한 프로젝트 레포지토리에 새 파일을 추가한다.
github desktop으로 하는 예제는 마지막에 있다.
![](https://i.imgur.com/cziDIiJ.png)
팀원, 포크한 레포지토리에 새 파일이 추가되었다
![](https://i.imgur.com/sVjAeAM.png)
팀원, 변경 사항을 Open Pull Request 한다
![](https://i.imgur.com/05sEbAG.png)
팀원, Pull Request 내용을 적는다
![](https://i.imgur.com/vc0okUz.png)
팀원, 변경 사항을 Open Pull Request 한다
![](https://i.imgur.com/cteKcQc.png)
팀장, Pull Request 를 확인한다.
![](https://i.imgur.com/6dg7Cdn.png)
팀장, Pull Request 를 확인한다.
![](https://i.imgur.com/sqj5lcK.png)
팀장, Merge 한다.
![](https://i.imgur.com/fKlcjUs.png)
![](https://i.imgur.com/O8oZbf9.png)
프로젝트 레포지토리에 팀원이 추가한 파일이 추가 되었다.
![](https://i.imgur.com/wZi41Zp.png)
포크한 레포지토리를 Sync 해서 동기화를 한다.
![](https://i.imgur.com/H2d02z9.png)
Sync 해서 동기화로 upstream 과 commit 을 일치시킨다
![](https://i.imgur.com/VN8PIvE.png)
클라이언트에서 fork 레포지토리 작업
팀 레포지토리에 참여한 사용자가 원격 레포지토리를 클론해서 로컬에서 작업을 할 수 있다. 작업한 결과는 Push를 통해서 원격레포지토리에 동기화를 한다.
fork한 레포지토리를 로컬에 클론한다
Github desktop을 이용해서 레포지토리를 선택해서 클론을 수행한다.
![](https://i.imgur.com/AfJMbPI.png)
클론 레포지토리를 저장할 위치를 정한다.
![](https://i.imgur.com/i6pg4US.png)
Git desktop은 직접 Upstream에 pull request 를 할 수 있도록 지원하고 있지만 여기서는 Push 를 사용하겠다.
![](https://i.imgur.com/8j8gHHe.png)
클론한 로컬 레포지토리에서 새파일 작업을 한다
![](https://i.imgur.com/neAvUZC.png)
레포지토리에 변경 사항을 커밋을 한다.
![](https://i.imgur.com/WGRMEPe.png)
로컬의 커밋 변경을 PUSH 한다
![](https://i.imgur.com/CIsYfjm.png)
github upstream에 pull request 한다
![](https://i.imgur.com/P85gWeS.png)