Github, Bitbucket 등 대부분의 Git 기반 서비스들은 forkpull request라는 기능을 가지고 있습니다. fork특정 원격 저장소의 히스토리를 그대로 다른 저장소에 복사하는 것을 말합니다. 대부분 다른 사람이 owner인, write 권한이 없는 오픈 소스 프로젝트에 기여하기 위해 사용합니다.

Pull request는 브랜치 간 변경 사항의 merge를 요청하는 것을 말합니다. Fork된 저장소라면, 원본 저장소에 변경 사항을 요청하기 위해서도 사용합니다.

  1. 팀 프로젝트를 진행한다면, 공용 저장소에 자신을 위한 브랜치를 만들고, 해당 브랜치에 변경 사항을 만들고, pull request로 원본 브랜치에 merge를 요청합니다.(브랜치 간 merge 요청)
  2. 오픈 소스 프로젝트를 진행한다면, 저장소를 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

+ Recent posts