Git

git merge

git merge

나뉘어진 브랜치를 다시 하나의 브랜치로 합치는 것을 말한다.
가장 오류가 많이 발생하는 과정이니 주의해야 한다.

Merge 진행 시 현재 브랜치를 브랜치가 합쳐지는 기존 메인 브랜치로 전환한 후 수정된 브랜치를 Merge해야 오류가 발생하지 않는다.

여러 개의 브랜치들을 한꺼번에 Merge할 때도 마찬가지로 차례차례 기존 브랜치 상태에서 Merge를 진행한다.

 

git checkout [merge를 담을 메인브랜치]

git merge [merge할 브랜치 이름] //현재 brach의 내용과 합칠 브랜치이름

//주의)
//같은 파일의 같은 위치의 내용이 변경된 경우 충돌이 발생한다.
//충돌나는 이유는 변경한 내용이 같은 행에 포함되어 있기 때문이다

 

Merge에는 종류가 2가지가 있다.

하나는 fast-forward이고, 나머지 하나는 non fast-forward이다.

 

fast-forward

기본 merge 방식으로, 서로 다른 두 브랜치를 충돌 없이 자동 merge 시키는 병합이다.

하지만 그 과정에서 때때로 일부 문법으로 인해 충돌 (Conflict)이 발생하면 병합에 실패하는 경우가 발생한다.

이때 해당 충돌 기록을 살피며 일일히 해당 코드를 수정한 뒤 Merge를 이어서 진행하면 성공적으로 브랜치가 병합된다.

이 Merge 방식이 non fast-forward 이다.

또한 이 과정에서 코드의 수정이 이루어졌으니 마찬가지로 새로운 커밋이 생성된다.


참고)

fast-forward는 내 현브랜치보다 더 앞으로 진행해서 최신커밋으로 옮겼다는 것이다.

fast-forward는 commit생성 x

fast-forward아닌 방식은 merge commit이라고 하는 commit을 생성

Git은 Merge하는데 필요한 최적의 공통 조상을 자동으로 찾는다.

  • 조상이 다르면 3-way-merge방식으로 진행한다.

 

 


참고 링크)

 

Git에 대해 알아보자 1. Git의 개념과 Git Flow

개발을 하다 보면 Git이나 GitHub, GitLab 같은 용어를 상당히 자주 듣게 된다. 오픈소스 프로젝트에 참여하려 했더니 GitHub 아이디를 물어보는 것도 모자라 인턴 지원을 하는데도 GitHub 주소를 알려달

cupjoo.tistory.com

 

'Git' 카테고리의 다른 글

git stash  (0) 2022.01.11
git checkout  (0) 2020.10.30
git branch  (0) 2020.10.30
git clone  (0) 2020.10.30
git pull  (0) 2020.10.30