[Git][branch] Merge branches

Hyeseong·2020년 12월 23일
0

GIT

목록 보기
9/24

Branch merge

앞선 노트에서 branch를 말들었습니다. 이제는 병합(합치기)하는 방법을 알아볼게요.

$ git log --branches --graph --decorate --oneline

브랜치들 상태를 확인할 수 있어요.
위의 스샷을 요약하면 exp,master 브렌치에서 1,2commit은 공통이고
exp브렌치는 3,4 버전으로 분기 된걸 볼 수 있어요.
master브렌치는 버전5로 나오게 되었네요.

그럼 이제 5와 4를 병합해볼게요.
좀더 구체적으로 b774b3e(exp)4==>7081152(master)5 이렇게 가는거에요. exp 브렌치내용을 가져다가 master에 쏟아 붇는다고 보면 되요.
그래서 master branch commit 5에 exp 브렌치 3과 4의 내용을 갖게 만들어 준다는 의미에요.

우선 exp --> master로 merge하기 위해선 master로 checkout한 다음 master에서 merge 명령어를 입력하고 실행하게 되요.

$ git checkout master 
$ git merge exp  

git merge exp

vim 에디터가 열리고 노락색 글자로 Merge branch 'exp'라는 문장이 보이네요. 다음 :wq! 키를 누르고 저장하고 나와주세요.

git log --branches --graph --decorate --online

현재 master는 11467cd 커밋으로 checkout되었네요. 그리고 자동으로 작성된 commit message인 "Merge branch 'exp' " 가 보이네요.
그리고 이 11467cd 커밋은 2개의 부모 커밋을 가져요.
첫 번째! 원래 master 브랜가 가지고 있었던 13014a5에요. 자세히 보면 빨간줄 따라서 *표가 이어진게 보이조?
두 번쨰! 3번(cb32bbc)과 4번(8b8db28)을 조상과 부모로 가지게 되요.

$ ls -al
total 14
drwxr-xr-x 1 이혜성 197121 0  6월 19 19:32 ./
drwxr-xr-x 1 이혜성 197121 0  6월 19 18:19 ../
drwxr-xr-x 1 이혜성 197121 0  6월 19 19:34 .git/
-rw-r--r-- 1 이혜성 197121 9  6월 19 19:32 f1.txt
-rw-r--r-- 1 이혜성 197121 0  6월 19 19:32 f2.txt
-rw-r--r-- 1 이혜성 197121 2  6월 19 17:50 f3.txt

f1, f2, f3 텍스트를 모두 갖게 되요.

하지만 exp 브렌치는 3~4번은 갖고 있지만 5번은 갖고 있지 못해요.
그럼 exp가 master가 작업했던 5번을 가질수 있도록 해볼게요.

$ git checkout exp
$ git merge master 
$ git log --branches --graph --decorate --oneline

log 기록을 통해서 exp, master브랜치가 똑같은 커밋 기록을 가지고 있는걸 확인 할 수 있어요.
구체적으로 본다면 11467cd 커밋이 3~5번 커밋을 공통의 부모로 가지게 되었어요.

그럼 더이상 exp는 사실상 필요 없게 되었어요.

$ git checkout master 
$ git branch -d exp # exp 브렌치 삭제 
$ git log --branches --graph --decorate --oneline

(head -> master) 이 부분이 master branch만 남은게 보이고 다른 곳 어디에도 exp라는 글자가 보이지 않네요. 삭제된걸 파악 할 수 있어요.
이렇게 해서 병합(merge)이 무엇인지 살펴 봤어요.

profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글