1. Git Merge 란?
Git에서 merge(병합)는 두 개 이상의 브랜치를 하나로 합치는 과정을 의미한다. merge는 각각의 브랜치에서 변경된 내용을 하나로 합치기 때문에, 다양한 작업을 분리하여 동시에 수행할 수 있는 Git의 가장 중요한 기능 중 하나이다.
merge는 다음과 같은 두 가지 유형이 있다.
1. Fast-forward merge
Fast-forward merge는 대상이 되는 브랜치에서 변경 사항이 없을 때, merge할 브랜치의 HEAD를 대상 브랜치로 이동시키는 방식으로 merge를 수행한다. 이 경우에는 별도의 커밋이 생성되지 않으므로, merge 과정이 간단하고 빠르다.
2. 3-way merge
3-way merge는 대상이 되는 브랜치와 merge할 브랜치 모두에서 변경사항이 발생한 경우, Git이 두 브랜치에서 변경된 내용을 비교하고, 자동으로 merge를 시도한다. 이 때 충돌이 발생할 수 있으며, 신중하게 충돌을 해결하고 merge 커밋을 생성해야 한다.
2. Git merge 수행 과정
1. merge 대상 브랜치로 이동
$ git checkout master
2. 브랜치에 대한 merge 작업 수행
$ git merge feature
3. merge 과정에서 충돌 발생 시, 충돌을 해결하고 커밋 생성
$ git add <conflicted files>
$ git commit -m "Merge feature branch into master branch"
3. Git merge 작업 주의 사항!
1. merge 대상 브랜치를 잘못 선택하지 않도록 주의
- merge 대상 브랜치를 잘못 선택하면, 기존 브랜치의 변경 사항이 손실될 수 있다. 예를 들어, 현재 feature 브랜치에서 작업하고 있다가 실수로 master 브랜치를 merge할 경우, feature 브랜치에서 작업한 내용이 모두 손실된다.
$ git checkout feature
$ git merge master # 잘못된 merge 대상 브랜치 선택!
2. 충돌에 대한 신중한 해결
- merge할 브랜치와 대상 브랜치에서 모두 수정된 내용이 있다면, 충돌이 발생할 수 있다. 이 경우 충돌을 적절히 해결하지 않으면, 기존의 중요한 코드들을 잃거나 의도치않는 수정이 이뤄질 수 있다.
$ git merge feature
Auto-merging <filename>
CONFLICT (content): Merge conflict in <filename>
Automatic merge failed; fix conflicts and then commit the result.
- 충돌이 발생할 시, 다음과 같은 메시지가 출력된다. 충돌을 해결하기위해선 해당 충돌이 발생한 파일을 열어 수정하고, 변경 사항을 add한 후 커밋한다. 이러한 충돌에 대한 부분은 IDE에서 쉽게 파악할 수 있다.
$ git add <conflicted file>
$ git commit -m "Merge feature branch into master branch"
'ETC' 카테고리의 다른 글
[Java] 메모리 구조 (1) | 2023.05.08 |
---|---|
[Java] 자바 접근 제어자 (0) | 2023.04.27 |
[Git] 브랜치 개념과 사용법 (0) | 2023.04.20 |
[Git] 커밋 메시지 작성 요령 (0) | 2023.04.20 |
[Git] Git 기본 명령어 소개 (0) | 2023.04.19 |