상세 컨텐츠

본문 제목

git rebase / git merge 차이점과 사용시기

Study/GIT

by 휀스 2012. 12. 1. 11:00

본문


git rebase / git merge 차이점과 사용시기

 

git merge 와 git rebase 는 각각 언제 사용하여야 하는 것일까요?

 

본인의 사용한 경우를 예로 들어 보겠습니다.

 

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

- merge : merge 할 branch 의 수정 내용만 내 branch 로 옮김.

 

대충 그린 그림이지만 그림을 보시죠. ^^

 

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 로 작업이 불가능 하다는 것 입니다.


실제 rebase 의 과정을 보면 b branch 로 checkout 을 한 후 a' 와 a'' 를 cherry-pick 하는 것과 동일한 작업을 하더군요 하지만 이 작업이 자동으로 된다는 차이점이 있겠죠.




merge 의 경우

a'' 의 위치에서

 

$ git merge b

 

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

 

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

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

 

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


출처 : http://littlehead.tistory.com/5 인데 조금 수정 했음.




관련글 더보기