Github, Bitbucket 등 대부분의 Git 기반 서비스들은 fork
와 pull request
라는 기능을 가지고 있습니다. fork
는 특정 원격 저장소의 히스토리를 그대로 다른 저장소에 복사하는 것을 말합니다. 대부분 다른 사람이 owner인, write 권한이 없는 오픈 소스 프로젝트에 기여하기 위해 사용합니다.
Pull request
는 브랜치 간 변경 사항의 merge를 요청하는 것을 말합니다. Fork된 저장소라면, 원본 저장소에 변경 사항을 요청하기 위해서도 사용합니다.
- 팀 프로젝트를 진행한다면, 공용 저장소에 자신을 위한 브랜치를 만들고, 해당 브랜치에 변경 사항을 만들고, pull request로 원본 브랜치에 merge를 요청합니다.(브랜치 간 merge 요청)
- 오픈 소스 프로젝트를 진행한다면, 저장소를 fork해서 내 저장소로 만들고, 자신의 저장소의 특정 브랜치에 변경 사항을 만들고, pull request로 원본 저장소에 merge를 요청합니다.(fork된 저장소와 원본 저장소의 브랜치 간 merge 요청)
Github를 기준으로 설명하도록 하겠습니다.
Fork하기
위에서 말했던 것처럼 대부분의 Git 기반 서비스들은 fork
를 지원합니다. 제가 현재 진행하고 있는 DMS
라는 프로젝트의 DMS-Backend
저장소를 fork해서 제 저장소로 만들도록 하겠습니다.(Organization name까지 합치면, DSM-DMS/DMS-Backend
입니다.) 저장소 화면의 우측 상단에 Fork
라는 버튼이 있으며, 이 버튼을 눌러 저장소를 어디로 fork할지 선택할 수 있습니다.
자신 혹은 자신이 속한 Organization에 fork할 수 있으며, 여기서는 제 개인 저장소로 fork하도록 하겠습니다.
위와 같은 로딩 화면을 거치고 나면, 선택한 곳에 저장소가 만들어 집니다.
JoMingyu/DMS-Backend
저장소가 만들어졌습니다. 또한, 원래는 github.com/DSM-DMS/DMS-Backend.git
이었던 Clone URL이 github.com/JoMingyu/DMS-Backend.git
으로 바뀌었습니다.
Fork된 저장소(여기서는 JoMingyu/DMS-Backend)는 이전에 했던 것처럼 origin
이라 부르고, Fork의 대상인 원본 저장소(여기서는 DSM-DMS/DMS-Backend)는 upstream
이라고 부릅니다.
Pull request하기
Pull request는 브랜치 간 변경 사항 merge를 위해 사용합니다. origin에서 upstream으로 변경 사항을 merge하기 위해서도 사용합니다. 여기서는 후자를 위해 사용해 보도록 하겠습니다. 저장소의 source tree 위쪽에 New pull request
라는 버튼이 존재합니다.
이 버튼을 눌러 pull request를 날릴 수 있게 됩니다.
head fork와 base fork를 비교하는 화면이 나옵니다. 여기서는 origin인 JoMingyu/DMS-Backend
의 master 브랜치(head fork)에서 upstream인 DSM-DMS/DMS-Backend
의 master 브랜치(base fork)로 merge를 요청합니다. Create pull request
버튼을 눌러 실제로 pull request를 여는 화면으로 이동합니다.
Pull request의 제목과 내용을 입력하고, 다시 Create pull request
를 누릅니다.
위와 같이 pull request가 생성되었고, upstream에 권한이 있는 사용자가 Merge pull request
를 누르면 실제로 변경 사항이 upstream에 적용됩니다.
'Git 레거시 글' 카테고리의 다른 글
[Git] Pull request에서 발생하는 충돌 해결하기 (1) | 2018.08.13 |
---|---|
[Git] Cherry-pick (0) | 2018.05.30 |
[Git] 커밋 히스토리 수정하기 (0) | 2018.05.29 |
[Git] 커밋 되돌리기 (0) | 2018.05.28 |
[Git] 다시 커밋하기 (0) | 2018.05.27 |