ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [git] merge (브랜치를 합쳐보자.)
    git 2022. 7. 2. 15:21

    안녕하세요. gaki 입니다.

    오늘은 git 에서 브랜치들끼리 합칠때 사용되는 merge 와 rebase 에 관하여 알아보겠습니다.

     

    <목차>

    1. merge

    2. rebase


    sourcetree 라는 앱을 사용해서 브랜치의 분기를 살펴보겠습니다.

    1. merge

    merge 는 브랜치들끼리의 내용을 합칠때 사용됩니다.

    먼저, master 브랜치에서부터 시작하겠습니다.

    master 브랜치에는 현재 readme.md 파일만 있습니다.

     

    실제 개발 상황을 가정하고 브랜치를 분기해보겠습니다.

    "각" 이라는 사람은 gak 라는 브랜치를 만들것이고, 

    "우" 라는 사람은 u 라는 브랜치를 만들것입니다.

     

    현재 master 브랜치와, u, gak 이라는 총 3개의 브랜치가 있습니다.

     

    gak 이라는 사람은 navbar 를 만드는 업무를 하기때문에 navbar.js 라는 파일을 만들것이고,

    u 는 button 을 만드는 업무를 하기 때문에 button.js 라는 파일을 만든다고 가정하겠습니다.

    이렇게 각각의 파일을 만들고 커밋을 하게 되면 현재 tree 는 다음과 같이 형성됩니다.

     

    이제 남은 일은 master 브랜치에 gak 브랜치와 u 브랜치를 병합하는 것입니다.

    먼저 gak 브랜치와 master 브랜치를 병합해보겠습니다.

    그림과 같이 성공적으로 병합이 되었습니다.

     

    즉, master 브랜치에 gak 이 작업한 navbar 내용이 병합되어있습니다.

    이제, master 브랜치에 u 가 작업한 button 을 병합해보겠습니다.

     

     

    master 브랜치에 u 가 작업한 내용과 gak 이 작업한 내용이 병합되었습니다.

    이런식으로 병합이 완료되었습니다.

    그럼 만약에 gak 이 작업한 navbar.js라는 파일을 u 도 동시에 작업해서 두 파일의 병합중 충돌이 생기면 어떻게 할까요?

     

    다시한번 초기 상태로 돌아가보겠습니다.

    master 브랜치에는 readme.rm 파일만 담겨있고, 존재하는 브랜치는 오직 master 밖에 없습니다.

     

    gak 브랜치와 u 브랜치를 만들고, gak 은 아까와 같이 navbar.js 파일을 만들었습니다.

    u 는 아까와 같이 button.js 파일을 만들고, 추가로 navbar.js 파일을 만들었습니다.

     

    이제 master 에 gak 과 u 를 병합해보겠습니다.

    먼저 master 와 u 을 병합하겠습니다.

     

    다음으로 master 에 gak 을 병합하겠습니다.

    이때 충돌에러가 발생할것입니다. 왜냐면 gak 에 있는 navbar 와 master 에 있는 navbar 가 충돌날것이기 때문이죠.

    예상대로 충돌이 발생했습니다.

    충돌한 Navbar.js 파일을 열어서 gak 이 짠 코드를 남기고, u 가 짠 navbar.js 코드를 지워줍니다.

    그다음, 커밋을 하면 다음과 같이 정상적으로 합쳐졌습니다.

     

    내용이 너무길어 rebase 에 관한 내용은 다음 글에서 이어서 쓰도록 하겠습니다.

Designed by Tistory.