(11) git merge

2019. 4. 30. 00:30GIT

이전 글에서 

[분류 전체보기] - (10) git branch 비교하기 여러개의 branch를 만들어서 작업을 했었습니다. 그럼 이번에는 여러개의 branch를 하나로 합치는 작업을 해보겠습니다. 

 

명령어는 간단합니다. 

git merge B

merge B는 현재 위치하는 branch에 B를 합치겠다는 뜻입니다. 저는 master에 exp를 합쳐보겠습니다. master branch로 이동한 후 git merge exp를 해주면 됩니다. 

git branch -d exp

exp는 이제 필요가 버린다. 그리고 다시 git branch를 통해 branch를 확인하면 master만 존재하는 것을 알 수 있다. 

git에서 merge의 방식에는 두가지 방법이 있다. 그것은 fast-forward랑 recursive이다. 

 

fastforward

 

master에서 branch를 만들어 준 후 master에 커밋 없이 branch를 확장 해주다가 merge를 해주면 

master는 그 브랜치를 가리키게 됩니다. 한마디로 되감기 하는 것입니다. 

c2에 있던 master가 결국 그냥 hotfix branch가 가리키는 것과 동일한 버전을 가리키게 됩니다. 

 

recursive

 

위사진에서 master와 iss53은 서로 다른 branch로 나누어 졌습니다. 그럼 iss53은 master에서 코드가 추가된 형태가 아닌 c4의 master와 c3 iss53은 전혀 다른 코드를 갖고 있을 것 입니다. master에서 단순하게 추가된 코드가 아닌 서로 다른 코드를 갖고있는 다른 브랜치들을 합칠 때 recursive라고 합니다. 

작동 법은 우선 공통의 조상을 찾은 후 (여기선 c2) c4와 c5 둘을 합쳐서 새로운 버전을 만듭니다. 그리고 그 버전은 master가 지목하고 있게 됩니다. 

'GIT' 카테고리의 다른 글

(13)git stash  (0) 2019.04.30
(12)git merge conflict  (0) 2019.04.30
(10) git branch 비교하기  (0) 2019.04.29
(9) git branch  (0) 2019.04.29
(8) git 과거 버전으로 돌아가기(revert, reset)  (0) 2019.04.29