상세 컨텐츠

본문 제목

git rebase 와 git merge 의 차이점과 각각 사용하는 경우

IT : GIT

by 휀스 2013. 1. 13. 01:00

본문



git rebase 와 git merge 의 차이점과 각각 사용하는 경우

 

git 을 사용하면 branch 들이 늘어나고 이를 관리해 주어야 합니다.

이때 사용할 수 있는것이 merge 와 rebase.

 

merge 와 rebase 는 각각 언제 사용하여야 하는 것인가?

 

이건 사용하는 사람에 따라 다를 수 있습니다다. 하지만 본인의 경우를 예로 들어 설명해 보겠습니다.

 

git 으로 branch 를 만들어 여러가지 작업을 했을 경우 다른 branch 의 내용이 필요할 경우가 있습니다.

이때 사용할 수 있는 방법이 rebase 와 merge 입니다.

 

- rebase 는 현재 branch 의 base 가 되는 지점부터의 history 를 모두 다른 branch 로 옮긴다.

- merge 는 merge 할 branch 의 수정 내용만 내 branch 로 옮긴다.

 

설명만 들으면 이해가 안되니 그림을 보고 설명을 하겠습니다.

 

a 와 b 는 branch 를 의미하고 a' a'' ba' ba'' 는 commit 을 의미.


 


 

위의 경우 a'' 에서 a 와 b 사이의 수정 내용이 필요할 때 a'' 위치에서 

 

$ git rebase b

 

라고 실행하면 결과물은 ba'' 가 나오게 됩니다. 그리고 a에서 a'로 가는 commit 화살표는 사라져 버리게 됩니다.

결과적으로 a -> a' -> a'' 로 commit 된 history 가 b -> a' -> a'' 로 commit 된 것으로 바뀌는 것 입니다.

그래서 rebase 작업 후 a branch 에서 다시 a -> b 로 변경되 commit 내용을 제외한 source 로 작업이 불가능 하다는 것 입니다.



그럼 merge 의 경우

 

a 와 b 는 branch 를 의미하고 a' a'' a''b는 commit 을 의미.



a'' 의 위치에서

 

$ git merge b

 

라고 하면 a 에서 b 사이의 변경 내용을 a'' 에 덧 붙여서 a''b 를 만들어 냅니다.

 

그리고 a branch 는 계속 유지가 되는거죠. 물론 b 도 유지가 됩니다.

그리고 차후 a branch 에서 b 의 내용이 적용되지 않은 상태로 작업을 하고 싶을 경우 a'' 로 head 를 옮기고 branch 를 새로 만든 후 작업을 하면 됩니다.

 

결과물은 같지만 이후 어떤 일을 해야 하느냐에 따라서 merge 와 rebase 를 사용하는 방법이 달라질 수 있다는 예를 들은 것 입니다. 이상!

관련글 더보기