예전에 작성한건데.. rebase 는 히스토리를 관리해준다~ 라고 알아두면 좋다.





1. 차이점


merge : branch를 합침. 혼자서 작업하는 경우에 사용할 것을 권장하고 있음.


rebase : 해당하는 branch를 기준으로 현재 branch와 합침. 때문에 자신이 작업한 내역은 생략되어서 히스토리 관리를 깔끔하게 할 수 있다고 함. 베이스를 다시 정한다(re-base) 라고 인지하면 차이점이 쉽게 보이는듯 하다.






2. 사용법


git merge <branch 이름>


git rebase [-i] <branch 이름>


rebase 의 경우 -i (interactive) 를 많이 사용하는데, 선택적으로 커밋 히스토리를 조작할 수 있다고 함.

(참고 : http://victorydntmd.tistory.com/279)






3. 테스트


rebase는 이 링크를 시도해보는걸 추천합니다 => https://backlog.com/git-tutorial/kr/stepup/stepup2_8.html


혼자서 merge, rebase 의 차이점을 이해하기 위해 잠깐 진행해봤는데 사실 크게 와닿지는 않았다.


... 그래도 무책임하게 포스트 딸랑 하나만 올릴 순 없어서 다시 시도해보고 로그를 자알~ 확인해보니


-------------------------------------------------------------

commit b64ac92b1af379570bad759856b37c01f88f706a

Author: ~~~~~~~~~~

Date:   Wed Sep 5 16:38:04 2018 +0900


    rebase test

-------------------------------------------------------------


이런식으로 branch 에서 commit 하였는데


master 에서 수정하고, test branch로 checkout 하여 commit 을 해보니 (뭐 충돌나고.. 이것저것 수정해봄)


--------------------------------------------------------------

commit 5a005295247291326afd975b8dcde95df16479e4

Author: ~~~~~~~~~~

Date:   Wed Sep 5 16:38:49 2018 +0900


    I'm Master

--------------------------------------------------------------


앞서 커밋 로그 내역(rebase test)이 정말로 사라졌다. 생략된 것일까?


이것만 봐서는 절대 모르니 한번 직접 해보길 추천한다.


*** 이후 rebase -i HEAD~2 이런식으로 사용을 해봤는데

(~는 뒤, ^는 앞)


에디터를 통해 커밋 히스토리를 조작할 수 있었다. (push 하기 전에 해야됨)




4. 결론


다른 사람이 작업한 git 에 clone 하여 작업하고,


push 로 올리기 전에 rebase 하여 최신 master 소스를 기반으로 수정하는 용도로 많이 쓰일것 같다.








출처 및 참고 : https://blog.outsider.ne.kr/666