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' 카테고리의 다른 글
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 |