팀 프로젝트를 진행하면서 다른 브랜치에 있는 코드를 가져와야할 일이 생겼다. 대략적인 상황은 다음과 같다.
기능을 개발할 때 dev 브랜치에서 feat 브랜치를 따서 작업을 하고 다시 dev 브랜치에 merge 하는 방식으로 작업을 진행하고 있었다.
이렇게 작업을 진행하던 도중, 테이블 구조를 변경해야할 일이 생겨서 다른 팀원분이 Entity를 수정하고 dev 브랜치에 코드를 merge 한 상태였기 때문에 나는 feat 브랜치에서 dev 브랜치로부터 코드를 받아와야하는 상황이였다.
다른 브랜치에서 코드를 받아올 때 사용할 수 있는 명령어는 다음과 같다.
git merge [브랜치명]
git pull [브랜치명]
git merge origin dev
git pull origin dev
또는 Intellij의 Git 탭의 Local dev 브랜치에서 우클릭을 통해 Update를 통해 코드를 받아오고 이를 다시 git pull dev 하면 코드를 받아올 수 있다.
코드를 받아오는 과정에서 Conflict 가 발생한 코드는 다음과 같이 파일명과 함께 콘솔에 나타나게 된다.
이 파일들을 직접 찾아가서 코드를 병합한뒤 commit 해도 되지만, Intellij에서는 conflict가 일어난 파일들을 한눈에 볼 수 있는 기능을 제공한다.
Git → Resolve Conflicts 에서 충돌이 일어난 파일들을 볼 수 있다. 해당 파일들을 더블클릭하면 다음과 같은 화면이 나타난다.
본 화면에서 충돌이 일어난 부분들을 수정할 수 있는데 왼쪽에 있는 코드는 현재 나의 코드이고 오른쪽은 다른 브랜치로부터 받아온 코드이다.
>> 아이콘을 클릭하게 되면 코드가 반영되고 x 아이콘을 누르면 무시된다. 이를 통해 코드를 선택적으로 병합할 수 있다.
코드 병합이 끝나고 나면 Save changes and finish merging 텍스트를 클릭하여 병합 과정을 끝내면 된다.