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

+ Recent posts