이전 포스팅에서는 브랜치를 따는 방법에 대해 알아보았다. 이번 포스팅에서는 딴 브랜치를 master 브랜치에 병합시키는 방법에 대해 알아보자. 지금은 한 프로젝트에 여러 명이 붙는 협업의 개념이 아닌 혼자서 작업하는 경우이다. 협업할 때의 상황은 추후에 따로 다룰 예정이다.
현재 해당 repository의 master에 있는 파일 상태이다. 또한 소스트리로 보면
9012.py는 아무 것도 없는 상태이다(오른쪽 아래 빨간색 표시). 필자는 왼쪽에도 나와 있지만 ‘백준2504번코딩’ 브랜치, ‘백준9012번코딩’ 브랜치 이렇게 2개의 브랜치를 따서 각각의 작업을 진행한 상태이다(master 브랜치까지 포함하면 3개). master(흰 동그라미(초록색 표시))를 기준으로 파란 직선 가지(브랜치), 분홍색 가지(브랜치) 이렇게 2개가 뻗어있다고 생각하면 된다. 현재 master 브랜치는 ‘백준 알고리즘 9012번 : 괄호 - 시작’ 에 위치해 있고 push 상태 또한 ‘백준 알고리즘 9012번 : 괄호 - 시작’ 에 위치해 있다(pooh_algorithm/master의 위치를 보고 판단). 반면, 작업 브랜치들은 ‘백준2504번코딩’의 경우 ‘백준2504번(3)’에 위치해 있고 ‘백준9012번코딩’의 경우 ‘백준 9012번 설명 추가’에 위치해 있다. 이렇게 2개의 작업 브랜치가 있지만 필자는 ‘백준9012번코딩’ 브랜치만 master 브랜치에 병합시켜 볼 것이다.
작업 브랜치에서 목표한 작업을 다하게 되면 master 브랜치에 병합을 시켜줘야 하는데 이 때 중요한 것은 master에 병합하고자 하면 master 브랜치에서 해야한다는 것이다. master에 있는 내용을 병합한다고 생각해서 ‘백준9012번코딩’ 브랜치에서 merge(병합)한다고 생각할 수도 있지만 병합을 받는 master 브랜치에서 작업해야 하는 것을 잊어서는 안 된다.
병합하는 방법은 먼저 master 브랜치를 선택한 후 merge하고자 하는 브랜치(‘백준9012번코딩’ 브랜치)에 마우스를 갖다 대고 오른쪽 버튼을 눌러 ‘현재 브랜치로 백준9012번코딩 병합’을 클릭한다.
클릭하면 이런 창이 뜨는데 ‘확인’ 버튼을 눌러준다.
아까 봤던 브랜치들 형태라고 생각할 수 있지만 사실 잘 보면 아까와 다르다. 아까는 master 브랜치를 기준으로 2개의 다른 브랜치(‘백준2504번코딩’ 브랜치, ‘백준9012번코딩’ 브랜치)가 뻗어있었다면 지금은 1개의 브랜치(‘백준9012번코딩’ 브랜치)가 master 브랜치와 병합돼서 master 브랜치를 기준으로 1개의 브랜치(‘백준2504번코딩’ 브랜치)만 뻗어있는 상황이라고 생각하면 된다. 실제로 병합하기 전의 화면은 백준 9012번(1), 백준 9012번(2), 백준 9012번 설명추가, 이렇게 3번의 작업이 작업 브랜치에서 진행되고 있었으나 이 작업들이 master 브랜치에 병합되어 현재는 master 위치 아래에 위치한 것을 확인할 수 있다. 작업 브랜치는 빨간색, master 브랜치는 연두색이라고 생각하면 된다. 아까는 백준 9012번(1), 백준 9012번(2)가 작업브랜치여서 빨간색이었으나 현재는 master 브랜치에 병합됐기 때문에 연두색으로 표시했고 주황색은 push 상태를 의미한다. 또한 오른쪽 아래를 보게 되면 빈 칸이 아닌 병합된 내용들이 들어가 있다. 실제로 파일을 열어보면
이렇게 병합된 내용들이 나온다. 이제 해당 내용들을 push해주자. 소스트리 화면에서 위쪽 부분을 보면 Push 버튼이 있다. Push를 누르면
작업 브랜치를 master 브랜치에 병합했기 때문에 작업 내용들이 다 들어가 있다. 따라서, master 브랜치만 push 해주면 된다. master에만 체크한 다음 push 버튼을 누른다.
이 역시 변화가 없는 것 같지만 pooh_algorithm/master가 master에 올라와있다. 이 브랜치 위치가 바로 push한 위치이다. 즉, master 브랜치가 잘 push됐음을 확인할 수 있는 것이다. 해당 저장소로 가보면
해당 내용들이 잘 올라가 있다.
하지만 지금은 아무것도 없는 파일에서 내용들이 추가된 것이기 때문에 병합할 때 충돌이 없었는데 서로 다른 브랜치에서 같은 부분을 작업하는 경우 병합 시 충돌이 발생할 수 있다. 이런 충돌 관련 내용에 대해서는 다음 포스팅에서 다루도록 하겠다.
참고 블로그 :