[Github] 깃허브와 브랜치를 이용해 협업하기

승민·2021년 12월 16일
0

Git

목록 보기
3/4

📝Branch란?

브랜치(Branch)란 작업 공간을 의미합니다. 우리가 처음 레포지토리를 만들면 자동적으로 main이라는 공간이 생깁니다. 앞의 포스팅에서 푸시를 하거나 풀을 받을 때 git pull origin main이나 git push origin main과 같은 명령어를 썼는데, 여기서의 main이 바로 브랜치입니다. main이라는 한 공간에서 여러 명이 작업을 할 수는 있지만 이런 경우 버전 관리가 힘들어지고 충돌이 발생할 확률이 높아집니다. 따라서 기능별 혹은 개인별 브랜치를 만들어 각자의 작업 환경에서 작업을 진행하는 것이 효율적입니다. 이렇게 각자 작업한 결과물을 하나의 브랜치에 합치는 작업을 머지(Merge)라고 합니다. 그리고 같은 팀원들에게 이러한 머지 작업을 하자고 요청하는 행위를 풀 리퀘스트(Pull Request)라고 합니다.

위의 그림은 기능별로 브랜치를 나누어서 작업하는 경우의 예시입니다. 게시판을 만드는 사람은 게시판 기능 브랜치에서, 로그인 기능을 만드는 사람은 로그인 기능 브랜치에서 기능을 작성하고 다 완성되면 main과 머지하면 됩니다.

💻Branch 생성, 변경 명령어 및 Pull Request, Merge

브랜치를 생성하기 위해서는 git branch 생성하고자 하는 브랜치이름을 입력하면 됩니다. 저는 알고리즘 풀이가 있는 폴더에 언어별로 풀어보면 좋겠다는 생각에 다음과 같은 java 브랜치를 추가했습니다.

현재 레포지토리에 있는 브랜치들의 목록과 현재 본인이 어떤 브랜치에 속해있는지 알고 싶으면 git branch 명령어를 사용하면 됩니다.

맨앞에 *표시가 있고 초록색으로 표시된 브랜치가 현재 내가 속해있는 브랜치 입니다. 현재 속해 있는 브랜치에서 다른 브랜치로 변경하는 것을 체크아웃(checkout)이라고 합니다. 체크아웃을 하기 위한 명령어는 git checkout 변경하고자 하는 브랜치이름 입니다. main 브랜치에서 java브랜치로 체크아웃해보겠습니다.

브랜치가 java로 변경된 것을 볼 수 있습니다. java로 체크아웃한 상태에서 파일을 추가하고 커밋과 푸시를 진행해 보겠습니다.

자바 브랜치에 체크아웃한 상태에서 메모장 파일 하나를 추가하고 커밋과 푸시를 했습니다. 푸시할 때 git push origin 체크아웃된 브랜치이름으로 해야합니다. 이 상태로 github의 레포지토리에 들어가보면 다음과 같이 compare&pull request 창이 뜹니다.

해당 버튼을 누르면 다음과 같은 창이 뜨면서 어떤 브랜치에서 어떤 브랜치로 합칠 것인지 선택할 수 있고 코멘트를 남길 수 있습니다. 이 과정이 다른 팀원들에게 merge를 요청하는 것이고 pull request를 날리는 것입니다.

이렇게 merge 권한이 있는 팀원들이 pull request를 받으면 다음과 같이 표시가 되고 Merge pull request 버튼을 누르면 java 브랜치의 내용이 main 브랜치에 합쳐지게 됩니다.

profile
안녕하세요 승민입니다

0개의 댓글