'Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문'을 토대로 정리한 Git 자습서 페이지입니다.
(본 페이지 주소: https://c11.kr/hello-git)
마지막으로 pull request와 fork에 대해 알아보자. 해당 기능들은 Git에서 제공하는 기능은 아니고 GitHub에서만 제공하는 기능으로 터미널 창에서 명령어를 통해 실행하는 것이 아니라 GitHub website에서만 사용한다.
Pull Request 개요
Pull Request 사용 방법
Pull Request & Fork
Pull Request 개요
Pull request의 기본적인 기능은 remote repository의 branch 간 병합. Local에서 실행하는 git merge와 유사하지만 다음과 같은 기능들을 추가로 제공한다.
- Branch가 바로 병합되는 것이 아닌 리뷰어에 의해 검토 & 승인을 받으면 병합
- 댓글을 통해 변경사항 리뷰가 가능
- 코드에 line-by-line 주석을 달아서 첨삭할 수 있음
Pull Request 사용 방법
Pull request 만드는 방법 실습. Pull request는 branch 병합 기능이므로 최소 2개의 remote branch가 필요. Remote repository를 clone한 local repository에서 신규 branch를 만들어서 remote에 업로드해보자.
1. 신규 branch를 생성하고 checkout
$ git checkout -b pull-request-test
2. 아무 파일이나 생성하여 내용을 작성한 뒤 commit
3. 현재 pull-request-test라는 branch는 local에만 존재하고 remote에는 없는 branch이기 때문에 remote branch를 생성하면서 업로드하는 형태의 git push를 사용해야 함.
# git push [remote repository 별명] [생성하고 싶은 remote branch 이름]
$ git push origin pull-request-test
이 명령어를 실행하면 몇가지 메시지들이 출력되고 업로드가 완료된다.
4. GitHub 웹사이트를 다시 가보면 생성한 branch가 업로드되었다는 팝업 메시지와 함께 branch 목록에 방금 업로드한 branch가 업데이트되었음을 확인할 수 있음.
이제 생성한 branch를 master branch에 병합하는 pull request를 진행해보자.
1. 2 branches를 클릭하여 전체 branch 목록으로 진입.
2. 전체 branch 목록에서 우리가 만든 pull-request-test branch의 우측에 New pull request 버튼을 클릭.
3. 아래 스크린샷과 같이 pull request 메뉴가 나오는데 각각의 영역은 다음과 같다.
- compare는 작업해서 수정 사항이 있는 branch, base는 compare를 반영할 기준 branch.
- Pull request에 대한 상세 설명을 적는 란. 제목과 상세 내용으로 이루어짐.
- 모든 내용을 작성하였으면 Create pull request를 클릭하여 pull request를 생성.
4. 생성 후에는 자동으로 생성한 pull request 화면으로 이동. git merge 할 때의 규칙과 동일한 규칙으로 GitHub에서 충돌 검사를 진행한 뒤 이상없으면 아래와 같이 This branch has no conflicts with the base branch 라는 메시지가 출력됨. Merge pull request를 클릭한다.
원래 pull request를 만드는 것까지가 일반 개발자가 하는 일이고, merge하는 것은 repository owner나 maintainer가 진행하게 됨.
5. Pull request를 merge한 뒤 repository 메인 화면으로 돌아오면 master branch에 pull-request-test branch에 있던 내용이 합쳐졌음을 알 수 있다.
Pull Request & Fork
위 pull request 예제에서는 본인의 repository에서 진행을 했기 때문에 branch 생성, 업로드 등등을 자유롭게 할 수 있었다. 오픈 소스 프로젝트에 기여하는 것과 같이 다른 사람이 관리하는 repository에 코드를 수정해야되는 경우에는 해당 repository에 직접적으로 push할 수 있는 권한이 없기 때문에 위와 같은 방식은 사용할 수 없음.
GitHub에서는 이러한 경우에도 코드를 수정하고 pull request를 생성할 수 있는 fork라는 기능을 제공. Fork를 이용한 workflow는 아래 그림과 같다.
기존 방식과의 차이점은 수정 권한이 없는 프로젝트를 내 repository로 복사해와서(fork) 수정한 뒤 pull request로 반영 요청을 한다는 점 뿐.
각 repository의 우측 상단을 보면 fork를 위한 버튼이 있습니다. Fork 버튼을 클릭하면 내 repository로 해당 내용이 복사된다.
복사된 repository는 이름 아래에 어떤 repository에서 복사해왔는지에 대한 정보가 기재됨.
Fork → 코드 수정하고 pull request 단계까지 가면 아래와 같은 메뉴가 나타난다. 이전과는 다르게 base repository와 head repository 드롭다운 메뉴가 추가되었고 이것을 이용하면 다른 repository의 branch에도 pull request를 생성할 수 있다.
이로써 기초적인 Git과 GitHub에 대한 이야기는 모두 끝-.
'Git & GitHub' 카테고리의 다른 글
[Collaboration] Fetch & Pull (0) | 2022.11.06 |
---|---|
[Collaboration] Remote ↔ Local 작업하기 (0) | 2022.11.05 |
[Collaboration] GitHub으로 Repository 관리하기 (0) | 2022.11.05 |
[Branch] git statsh (0) | 2022.11.05 |
[Branch] Conflict 처리 (0) | 2022.11.05 |