하나씩 차근차근
article thumbnail
Published 2023. 1. 3. 09:02
Git - 3 way merge Git

앞에서 fast forward merge 에 대해 설명을 했는데 이번에는 3 way merge 에 대해 알아보겠습니다.

 

3 way merge

3 way merge 는 master 와 topic 이 각각 다른 commit 상태를 갖고 있을때 사용합니다.

위와 같이 master 는 글쓰기, topic 은 아이디중복체크 commit 을 갖고 있을때 사용됩니다.

 

실습

먼저 아래와 같은 상태로 브랜치를 만들어줍니다.

(1) 회원가입.txt 와 로그인.txt 생성 후 각각 commit

(2) topic 브랜치 생성 후 topic 브랜치로 이동

git checkout -b (브랜치명) 을 통해 브랜치 생성과 이동을 동시에 할 수 있습니다.

(3) topic 브랜치에서 아이디중복체크.txt 생성 후 commit

 

다음으로 master 브랜치에서 글쓰기.txt 를 생성하고 commit 합니다.

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex04 (topic)
$ git checkout master
Switched to branch 'master'

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex04 (master)
$ touch 글쓰기.txt

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex04 (master)
$ git add .

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex04 (master)
$ git commit -m "글쓰기"
[master 5d16125] 글쓰기
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "\352\270\200\354\223\260\352\270\260.txt"

현재 상태는 아래와 같습니다.

master 브랜치에는 글쓰기 commit 이 반영되어 있기 때문에 topic 브랜치와 fast forward merge 가 아닌

3 way merge 를 통해 병합이 됩니다.

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex04 (master)
$ git merge topic
Merge made by the 'ort' strategy.
 ...5\264\353\224\224\354\244\221\353\263\265\354\262\264\355\201\254.txt" | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "\354\225\204\354\235\264\353\224\224\354\244\221\353\263\265\354\262\264\355\201\254.txt"

merge 방법은 fast forward 와 동일하게 git merge (대상 브랜치) 를 사용합니다.

Merge branch 'topic'
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
...
<TEST/Desktop/git_workspace/ex04/.git/MERGE_MSG [unix] (08:58 03/01/2023)1,1 All
:wq

git merge topic 을 입력하면 위와 같이 vi 에디터를 통해 commit 메시지를 입력할 수 있는 화면이 나오는데

esc 를 누르고 :wq 를 입력해줍니다.

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex04 (master)
$ git log
commit 1b1f25e67e66e82faaf4644edb278f02415d507f (HEAD -> master)
Merge: 5d16125 26977ad
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:58:38 2023 +0900

    Merge branch 'topic'

commit 5d16125b11f9241f7f578a60cbb0271e96b0ce60
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:53:46 2023 +0900

    글쓰기

commit 26977ad81341f939b62bc006b3ce1c53af0250fd (topic)
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:51:17 2023 +0900

    아이디중복체크

commit e5649b0bc15be36ede62269f67ac771793bd6e2e
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:50:32 2023 +0900

    로그인

commit 3d49409ee3e0866b35007b8c1a2922eadcebccbe
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:50:10 2023 +0900

    회원가입

git log 를 통해 확인해보면 master 브랜치에 topic 브랜치의 내용이 반영된 것을 알 수 있습니다.

 

이 포스트는 유튜브에 올라온 메타코딩님의 Git 강의를 보고 정리한 내용입니다.
https://www.youtube.com/@metacoding

'Git' 카테고리의 다른 글

Git - clone 과 fetch  (0) 2023.01.03
Git - github 프로젝트 push 와 pull  (1) 2023.01.03
Git - fast forward merge  (0) 2023.01.03
Git - reset과 reflog를 통한 복구  (1) 2022.12.31
Git - 3가지 영역  (0) 2022.12.31
profile

하나씩 차근차근

@jeehwan_lee

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!