이번 포스트에서는 브랜치를 병합(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 |