git

#17 깃(Git) - 브랜치 머지(merge)하기 - 1

에이블디 2021. 11. 24. 17:36

안녕하세요! 에이블디 입니다!

 

오늘은 지난 시간에 이어 브랜치를 머지(merge, 병합)하는 방법에 대해 알아보겠습니다!

지난 시간까지 여러 개의 브랜치를 만들고 master 브랜치가 아닌 다른 브랜치에서 커밋도 해보았는데요!

프로젝트를 진행할 때 이렇게 각 브랜치에서 작업을 하다가 브랜치에서의 작업을 마무리하고 master 브랜치와 합쳐야 할 시기가 오는데 이렇게 브랜치를 합치는 작업을 머지(merge) 또는 브랜치 병합이라고 합니다.

현업에서는 머지한다는 용어가 더 자주 쓰이는데요, 이렇게 머지를 하다 보면 여러 상황이 생기기 마련인데 각 상황마다 머지하는 방법을 하나하나 알아보도록 하겠습니다.

 

머지는 상황별로 파일끼리 충돌이 일어나거나 여러 가지 변수가 많이 생길 수 있어 처음 공부할 때 어려울 수 있어서 이번 시간에는 새 리포지토리를 만들어 실습해 보도록 하겠습니다!

 

터미널 상태가 지난 시간 그대로이신 분들은 홈 디렉터리로 이동한 후 "merge-test"라는 레포지토리를 만들 텐데, 지금까지 만들었던 방법이 아니라 git init 명령 다음에 디렉터리 이름을 입력하면 새로운 디렉터리를 만들고 리포지토리를 초기화하는 과정을 한꺼번에 처리할 수 있습니다.

리포지토리 초기화 작업까지 마친 후, merge-test 디렉터리로 이동한 후 ls -al 명령을 사용하여 .git/ 디렉터리가 만들어진 것을 확인해 볼게요!

$ cd ~ 혹은 $ cd ..
$ git init merge-test
$ cd merge-test
$ ls -al

merge-test 디렉터리를 생성하여 리포지토리 초기화까지 한 번에 이루어지는 것을 확인할 수 있고, merge-test 디렉터리에 .git 디렉터리가 만들어 진것을 확인 할 수 있습니다.

 

vi로 텍스트 편집기를 열어 abled.txt라는 파일을 만들고 'AbleD'라는 내용을 입력한 후 저장하세요.

그리고 'abled 1'이라는 커밋 메시지와 함께 커밋해주세요.

$ vi abled.txt
$ git add abled.txt
$ git commit -m "abled 1"

'abled 1'이라는 메시지와 함께 커밋이 잘 되었네요!

 

이제 'YAMA'라는 브랜치를 만들어 보겠습니다.

그리고 브랜치가 잘 만들어졌는지 확인해 볼게요!

$ git branch YAMA
$ git branch

YAMA 브랜치가 잘 만들어졌네요!

그리고 현재 우리는 master 브랜치에 있는 것도 확인 가능합니다!

 

그럼 현재 우리가 있는 master 브랜치에 Jayden.txt라는 파일을 하나 더 만들고 텍스트 파일에 "Jayden"이라는 내용을 입력한 후 저장해 주세요.

그리고 'abled 2'이라는 메시지와 함께 커밋해주세요.

$ vi Jayden.txt
$ git add Jayden.txt
$ git commit -m "abled 2"

'abled 2'라는 메시지를 가진 커밋이 master 브랜치에 커밋된 것이 보이네요!

 

그럼 이제 YAMA 브랜치로 체크아웃해주세요!

$ git checkout YAMA

그리고 YAMA 브랜치에서 YAMA.txt라는 파일을 만들고 'YAMA'라는 내용을 추가한 뒤 파일을 저장해 주시고 'YAMA 1'이라는 메시지와 함께 커밋해 주세요.

$ vi YAMA.txt
$ git add YAMA.txt
$ git commit -m "YAMA 1"

YAMA 브랜치에 'YAMA 1'이라는 메시지의 커밋이 된 것을 확인할 수 있습니다!

 

그럼 git log에 지난 시간에 배웠던 graph 옵션을 사용하여 현재 브랜치와 커밋의 상태를 확인해 볼까요?

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

결과 화면을 보시면, abled 1 커밋은 master 브랜치와 YAMA 브랜치가 똑같이 가지고 있고, 그다음으로 master 브랜치에서는 abled2 커밋이, YAMA 브랜치에는 YAMA 1 커밋이 생긴 걸 확인할 수 있습니다.

 

이제 YAMA 브랜치에서 작업이 다 끝났다고 가정하고, YAMA 브랜치의 내용을 master 브랜치로 머지해 보도록 하죠!

브랜치를 머지하려면 master 브랜치로 체크아웃해야 합니다!

체크아웃해주세요!

$ git checkout master

master 브랜치로 체크아웃이 되었다면 git merge 명령 뒤에 가져올 브랜치 이름을 적어 머지합니다.

master 브랜치에 YAMA 브랜치를 머지해 볼까요?

$ git merge YAMA

머지를 하면 자동으로 텍스트 편집기가 실행되면서 "Merge branch 'YAMA'"라는 커밋 메시지가 적힌 채로 나타납니다.

브랜치를 머지하면서 만들어지는 커밋 메시지인데요! 커밋 메시지를 수정할 수도 있고, 자동 메시지를 그대로 사용해도 됩니다.

전 그냥 자동 메시지를 그대로 사용할게요!

수정해보고 싶으신 분들은 수정해 보셔도 좋습니다!

'ESC'키를 누르고 :wq 명령을 입력해 내용을 저장한 후 편집기를 종료해 주세요.

그러고 나서 ls -al 명령을 사용하여 현재 master 브랜치에 YAMA.txt 파일이 합쳐졌는지 확인해 주세요.

$ ls -al

YAMA.txt 파일이 master 브랜치에도 합쳐진 걸 확인할 수 있네요!

 

git log에 graph 옵션을 사용하여 브랜치와 커밋들이 어떻게 머지되었는지도 확인해 볼까요?

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

YAMA 1 커밋이 master 브랜치에 머지되면서 "Merge branch 'YAMA'"라는 새로운 커밋이 생겼네요!

 

오늘은 이렇게 서로 다른 브랜치에서 다른 파일들을 머지하는 방법에 대해 알아보았습니다!

다음 시간에는 다른 상황에서의 머지하는 방법에 대해서 알아볼게요!

 

그럼 여러분 다음 시간에 만나요!