Git merge : 프로젝트의 변경 사항 통합 (3-way / fast-forward)

“Git merge” 명령어는 브랜치를 병합하는 명령어 입니다. 브랜치 병합은 두 개 이상의 브랜치를 하나로 합치는 작업입니다.

주로 기능 개발이나 버그 수정을 별도 브랜치에서 진행한 후, 이를 메인 브랜치에 통합할 때 사용합니다.

git merge <병합 대상 branch>

Git에서 브랜치를 병합하는 방법에는 대표적으로 3-Way merge 방법과 Fast-Forward merge 방법이 있습니다.

두 방식 모두 git merge 명령어로 동작하는데요. branch의 상태에 따라 어떤 방식으로 동작 될 지 결정이 됩니다.

Git Merge 방법

3-Way merge (기본 방식) : 브랜치에 커밋이 1회 이상일 경우

두 브랜치가 서로 다른 커밋을 가지고 있을 때 적용 됩니다.

변경 내용을 비교하여 자동으로 병합하며, 충돌이 발생할 수 있습니다.

주로 실제 작업이 병렬적으로 진행된 경우에 사용됩니다.

Fast-Forward merge : 병합 대상 브랜치가 신규 커밋이 없는 경우

주로 병합 대상 브랜치에 변경 사항이 없는 경우에 사용됩니다.

새로운 브랜치를 생성하고 작업을 진행했는데 병합 대상이 되는 브랜치가 변경사항이 없다면 신규 브랜치 내용이 병합 브랜치 뒤로 바로 붙으면서 merge가 됩니다.

병합 과정에서 새로운 커밋이 생성되지 않고, 브랜치의 Head 커밋이 다른 브랜치의 Head 커밋으로 이동합니다.


위에서도 언급했지만 git merge 명령어는 3-way merge와 fast-forward merge는 따로 옵션을 정하지 않아도 브랜치의 상황에 따라 적합한 merge 방식으로 동작합니다.

Git branch 삭제하기

merge가 성공적으로 끝난 이후 브랜치의 삭제를 원할 경우 아래와 같은 명령어를 사용합니다.

git branch -d <branch>  # merge 성공한 branch의 경우
git branch -D <branch>  # merge를 하지 않은 branch의 경우

Git merge 시 유의사항

병합 전에 변경 사항 커밋하기

병합하기 전에 현재 브랜치에서 작업한 변경 사항을 모두 커밋해야 합니다. 커밋하지 않은 파일이 있는 상태에서 브랜치를 변경하면 충돌이 발생할 수 있습니다.

병합 충돌 해결하기

두 브랜치에서 동일한 파일을 수정한 경우 충돌이 발생합니다. 충돌을 해결하려면 수동으로 파일을 수정하고, git add로 스테이징한 후 git commit으로 병합을 완료해야 합니다.

참고하면 좋은 글

Leave a Comment

목차