Let`s study hard : 지대넓얕/TIL:today I learn

git branch 형상관리: git rebase 란

유니엘. 2021. 11. 13. 21:30
728x90

git rebase란 말 그대로 re base. 기초를 다시 한다는 의미로 git branch를 merge 하는 개념에서 출발한다. git merge와 branch의 개념이 잡혀있다는 조건 하에 포스팅을 작성해보도록 하겠다-

 

보통 git 관련하여 검색을 하면, ㅇ-ㅇ-ㅇ식의 커밋 과정을 많이 보여준다. 개인적으로는 그 부분이 참 눈에 들어오지 않는다고 생각했는데, 막상 관련한 포스팅을 하려고 보니 저런 표현이 아니고서는 깔끔하게 설명하기가 참 난감하다. 패드도 포토샵도 없는 내가 좋은 포스팅을 해보고자 손으로 직접 그리며 작성하니 나같이 평소 눈에 들어오지 않는다고 하셨던 분들에게도 부디 유익한 포스팅 자료가 되길..


rebase라고 하면 사실 많이들 어렵다는 생각을 하는데, 기본 개념 자체는 어렵지 않다. 잘 활용하고 다루기가 까다로울 뿐..  여기 다음과 같은 브랜치와 커밋들이 있다고 가정해보자.

master 브랜치는 A, B, C 순으로 commit을 하였다. C가 커밋 된 시점에서 feature 브랜치가 분기되어 새로운 CA, CB, CC의 커밋을 진행하였다. feature 브랜치에 커밋이 쌓이는 사이 master 브랜치에도 D, E의 커밋이 쌓이게 되었다. feature 브랜치는 master 브랜치와 합치려는 순간 확인하여 보니 master은 C가 아니고 E인 상황이었다. 하여 feature의 base가 되는 커밋을 master의 C가 아닌 E로 바꾸어 주려고 한다. base를 다시 바꾸다는 의미에서 이를 rebase라고 부른다. 

 

rebase를 해준 feature 브랜치는 하단과 같이 변할 것이다.

 


백문이 불여일견. 직접 테스트해보자.

 

master branch에 다음과 같은 두 개의 commit을 하였다.

(브랜치명) - 커밋 순번

해당 브랜치에서 새로운 브랜치를 따고 커밋을 진행했다. 파란 라인을 base로 하는 feature 브랜치에 3개의 커밋을 진행하였다.

다시 master로 돌아와 2개의 커밋을 더 추가했다.

그럼 현재 상태는 다음의 상단 검은 실선과 같다.

이것을 이제 하단 파란 점선처럼 변경시키는 것이 목표이다. 

 

먼저 HEAD를 feature 브랜치로 옮겨준다. 

git checkout '이동할 브랜치 이름'

git checkout origin/feature

다음 쿨하게 rebase를 실행해준다.

git rebase '합치고 싶은 브랜치 이름'

git rebase master

그럼 다음과 같이 test4 위에 feature의 commit이 쌓이는 것을 볼 수 있다. 이게 바로 rebase이다.

 

 

https://yuniel.tistory.com/53

 

git rebase 중 conflict 해결 실패기

지난번 rebase에 관하여 포스팅 한 적이 있다. https://yuniel.tistory.com/52 git branch 형상관리: git rebase 란 git rebase란 말 그대로 re base. 기초를 다시 한다는 의미로 git branch를 merge 하는 개념에..

yuniel.tistory.com

https://yuniel.tistory.com/54

 

git rebase 중 conflict 해결 (반)성공기

지난번 git rebase conflict 실패기의 해결 방법을 알아왔다! 이번 포스팅은 아래와 같은 포스팅을 참고하면 더 재미있게 읽을 수 있고, 히스토리를 몰라도 이해하는데에는 불편함 없으리라 예상된다

yuniel.tistory.com

 

728x90