-
Merge 기초
프로젝트를 진행하면서 각자 맡은 부분에 따라 서로 다른 branch들을 생성하다보면, 언젠가 서로 나뉜 브랜치들을 하나로 병합해야하는 순간이 오기 마련이다.
이때 Git에서는 이러한 branch끼리의 병합(Merge)을 어떠한 과정으로 처리하고 해결하는지 알아보려 한다.
아래의 시나리오는 git 공식 홈페이지에서 제공하는 문서를 참고하여 작성하였다.
1. 기본적인 master branch
먼저 어떠한 branch도 사용하지 않은 상태를 나타내보았다. 각 commit은 branch의 변경없이 기본 branch인 master에 commit한 상태이다. 여기서 만약 새로운 문제를 하나 처리해야한다고 생각해보자.
branch에 대한 개념이 없다면, 그냥 master branch에서 문제를 해결하기 위한 수정을 시작했을 것이다. 하지만 그런식으로 수정을 진행하다가, 수정한 버전이 더 엉망진창이 되어버린다면, 되돌리기가 오히려 더 힘들 수 있다.
따라서 아예 해당 이슈를 처리하기 위한 새로운 branch를 만들어, 해당 branch에서 독립적으로 작업을 진행하는 것이 나중에 일이 잘못되었을때를 대비해 더 합리적인 방법인 것 같다.
2. 새로운 issue branch 생성 및 코드 수정
위에서 설명한 이유에 의해 새로운 branch를 생성해야 한다. Branch의 생성은 아래의 명령을 이용한다.
$git switch -c issue
새로 만든 branch는 가장 마지막으로 작업한 commit을 가리킨다. 새로운 branch를 생성한 직후에는 master branch와 완벽히 같은 commit을 가리키기 때문에 둘을 완전히 같다.
하지만 branch를 issue로 전환한 다음에 새로운 작업을 진행하고, 이후 수정된 코드를 commit하면, 이때부터는 아래와 같이 master branch와는 서로 다른 길을 가게 된다.
3. 병합하기 (Merge)
이제 처음 발견된 문제가 issue branch에서 무사히 해결되었다. 다행히도 아무런 오류도 일어나지 않았고, 수정된 코드내용을 원래의 master branch에 그대로 적용해도 아무 문제 없을것이 확인된 상태라 하자.
이때 git의 merge기능을 이용하여 issue branch를 master branch에 병합시킬 수 있다.
$git switch master $git merge issue
여기서 주의해야 할 점은 중심이 될 branch로 미리 이동하여 merge 명령을 실행해야 한다는 것이다.
이때 병합으로 인해서 master branch가 가리키는 commit이 commit 3가 되었다.