하나씩 차근차근
article thumbnail
Published 2023. 1. 3. 08:42
Git - fast forward merge Git

이번 포스트에서는 브랜치를 병합(merge) 하는 방법에 대해 알아보겠습니다.

 

fast forward

단순히 master 브랜치를 새 브랜치로 옮겨서 병합하는 작업

위와 같은 상태에서 master 브랜치 (MB) 를 topic 브랜치 (tb) 로 옮겨서 병합하는 경우

 

실습

먼저 새 디렉토리에서 git 을 시작합니다.

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03
$ git init
Initialized empty Git repository in C:/Users/TEST/Desktop/git_workspace/ex03/.git/

다음으로 회원가입.txt 와 로그인.txt 파일을 만든 후 각각 commit 을 합니다.

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ touch 회원가입.txt

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

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ git commit -m "회원가입"
[master (root-commit) 8aec5d4] 회원가입
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "\355\232\214\354\233\220\352\260\200\354\236\205.txt"

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ touch 로그인.txt

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

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ git commit -m "로그인"
[master 142f1ea] 로그인
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "\353\241\234\352\267\270\354\235\270.txt"

다음으로 topic 브랜치를 생성합니다.

git branch (브랜치명) 을 통해 브랜치를 생성합니다.
TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ git branch topic

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ git log
commit 142f1eac81adecd62918f1ad50336beecf32a615 (HEAD -> master, topic)
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:26:40 2023 +0900

    로그인

commit 8aec5d4aa41873beeccd6079363df5cad01b242b
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:26:26 2023 +0900

    회원가입

git log 를 통해 확인해보면 master 와 topic 브랜치 모두 로그인 commit 에 있는것을 알 수 있습니다.

현재 브랜치를 master 에서 topic 으로 이동해보겠습니다.

git checkout (브랜치명) 을 통해 브랜치를 이동할 수 있습니다.
TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ git checkout topic
Switched to branch 'topic'

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (topic)
$ git branch
  master
* topic

topic 브랜치에서 아이디중복체크.txt 파일을 만든 후 commit 합니다.

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (topic)
$ touch 아이디중복체크.txt

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

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (topic)
$ git commit -m "아이디중복체크"
[topic d651d51] 아이디중복체크
 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"

git log 를 통해 확인해보면 master 와 topic 브랜치가 가르키는 commit 의 위치가 다릅니다.

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (topic)
$ git log
commit d651d512d7e3fd269c3a71c6ffd79ee171ac7381 (HEAD -> topic)
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:32:25 2023 +0900

    아이디중복체크

commit 142f1eac81adecd62918f1ad50336beecf32a615 (master)
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:26:40 2023 +0900

    로그인

commit 8aec5d4aa41873beeccd6079363df5cad01b242b
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:26:26 2023 +0900

    회원가입

다시 master 브랜치로 이동해서 현재 작업영역을 확인해보면 아이디중복체크.txt 파일은 볼 수 없습니다.

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

TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ ls -l
total 0
-rw-r--r-- 1 TEST 197121 0 Jan  3 08:26 로그인.txt
-rw-r--r-- 1 TEST 197121 0 Jan  3 08:24 회원가입.txt

현재 브랜치 상태는 다음과 같습니다.

fast forward 를 통해 master 브랜치를 topic 으로 이동시켜 병합해보겠습니다.

git merge (이동할 대상 브랜치)
TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ git merge topic
Updating 142f1ea..d651d51
Fast-forward
 ...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"

위와 같이 master 브랜치에서 git merge topic 을 통해 topic 브랜치와 병합합니다.

fast forward merge 는 commit 메세지가 남지 않는데
git merge --no-ff (브랜치명) 을 통해 commit 메세지를 남길 수 있습니다.
TEST@DESKTOP-6UMU4VH MINGW64 ~/Desktop/git_workspace/ex03 (master)
$ git log
commit d651d512d7e3fd269c3a71c6ffd79ee171ac7381 (HEAD -> master, topic)
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:32:25 2023 +0900

    아이디중복체크

commit 142f1eac81adecd62918f1ad50336beecf32a615
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:26:40 2023 +0900

    로그인

commit 8aec5d4aa41873beeccd6079363df5cad01b242b
Author: jeehwan <tjtojan@naver.com>
Date:   Tue Jan 3 08:26:26 2023 +0900

    회원가입

log 를 확인해보면 master 와 topic 브랜치 모두 아이디중복체크 commit 을 가리키고 있으며,

현재 상태를 그림으로 나타내면 다음과 같습니다.

 

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

'Git' 카테고리의 다른 글

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

하나씩 차근차근

@jeehwan_lee

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