본문 바로가기

Programming/Git

[Git]branch(2) - branch 합치기(merge/rebase) 및 삭제

안녕하세요. 잇킹 시도르입니다.

이제 생성한 브랜치 합치는 방법과 생성한 브랜치를 삭제하는 방법을 정리하려고 합니다.

 

브랜치 합치기

브랜치를 합치는 명령어에는 merge와 rabase가 있습니다. 둘의 차이점에 대해 확인해보겠습니다.

 

test1~3 소스를 가진 master 브랜치가 다음과 같이 존재합니다.

▲최초의 master 브랜치

 

develop 브랜치는 지금 master 브랜치 기준에서 생성하여, test2를 삭제하고 test3를 수정했습니다.

▲develop 브랜치

 

그리고 다시 master 브랜치로 변경해서 test4를 추가했습니다.

▲최종 master 브랜치

 

이제 develop 브랜치 사항을 master 브랜치에 반영하려고 합니다.

이때 사용할 수 있는 명령어가 2개가 있으며 차이점에 대해서 알아보겠습니다.

 

1) git merge

master 브랜치를 선택하고 git merge develop을 실행해주세요.

git merge 합칠 브랜치명
현재 브랜치에 브랜치명을 합친다.
(sidorl) D:\My_DEV\py_prj\git_test>git branch
  develop
* master

(sidorl) D:\My_DEV\py_prj\git_test>git merge develop
Updating b4bae0b..e0e2ded
Fast-forward
 test2.py | 1 -
 test3.py | 3 ++-
 2 files changed, 2 insertions(+), 2 deletions(-)
 delete mode 100644 test2.py

 

master 브랜치가 develop 브랜치 내용이 반영되었음을 확인할 수 있습니다.

▲develop 소스가 반영된 master 브랜치

 

이제 git log --graph --all --decorate 명령어를 통해서 커밋 히스토리를 확인해보겠습니다. 

git log --graph --all --decorate : 커밋 히스토리를 그래프 형태로 전부 보여주는 명령어

▲git merge의 커밋 이력

master와 develop의 커밋을 각각 분기해서 이력을 관리하는 것을 확인할 수 있습니다.

 

2) git rebase 브랜치명

reset 명령어를 통해 되돌아간 후에 git rebase develop 명령어를 수행했습니다.

결과적으로 git merge와 변경사항 반영은 같습니다.

 

그럼 커밋 이력을 확인해보죠.

▲git rebase의 커밋 이력

git merge와는 달리 develop의 이력을 별도로 분기하지 않고, 하나의 커밋 이력으로 관리하는 것을 확인할 수 있습니다. 즉, 프로젝트에서 커밋 이력을 어떻게 관리할 것이냐에 따라 git merge와 rebase를 선택해서 브랜치 변경사항을 반영하면 되겠네요.

 

 

브랜치 삭제

git branch -D 브랜치명
(sidorl) D:\My_DEV\py_prj\git_test>git branch develop2

(sidorl) D:\My_DEV\py_prj\git_test>git branch
  develop
  develop2
* master

(sidorl) D:\My_DEV\py_prj\git_test>git branch -D develop2
Deleted branch develop2 (was 1957537).

(sidorl) D:\My_DEV\py_prj\git_test>git branch
  develop
* master

 

브랜치 합치는 명령어 및 차이점과 브랜치 삭제 명령어를 정리해 보았습니다.

이상입니다!!!