체인의정석

Git) 브랜치 rebase 하기 본문

개발/git

Git) 브랜치 rebase 하기

체인의정석 2021. 9. 9. 13:30
728x90
반응형

깃에서 한 브렌치에서 다른 브랜치로 합치는 방법은 2가지가 있다고 한다.

첫번째는 Merge이고, 두번째는 rebase라고 한다.

 

이렇게 2개의 브랜치가 나누어져 있다고 가정해보자 이 2개를 합리는 가장 쉬운 방법은 merge 명령어를 사용하는 것인데 c2, c3, c4 3개의 커밋이 머지되게 된다.

다음으로 위와 같은 그림이 Rebase라고 할 수 있다. Rebase는 C3에서 변경된 사항을 Patch로 만들고 C4에 적용시키는 것이다. rebase 명령으로 한 브랜치에서 변경된 사항을 다른 브랜치에 적용할 수 있다고 한다. 글을 쓰다가 patch에 대한 개념이 부족하여 다시 정리를 하고 돌아왔다.

https://it-timehacker.tistory.com/142

 

Git) Patch 설명 및 명령어 정리

patch에 대해 개념이 부족하여 조금 더 살펴보았다. https://www.tuwlab.com/ece/22225 [GIT] Patch 만들기 및 적용하기: format-patch, am - ECE - TUWLAB 앞선 글에서 GIT을 활용하여 작업을 할 때는 로컬 저장..

it-timehacker.tistory.com

 

$ git checkout experiment
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: added staged command

이를 통해 실제로 일어나는 일은 두 브랜치가 나뉘는 커밋부터의 diff를 어딘가에 임시로 저장해 놓는다. Rebase할 브랜치가 합칠 브랜치가 가르키는 커밋을 가리키게 하고 저장해 놓은 변경사항을 차례대로 적용하게 된다.

C4'의 변경사항을 C3에 적용하는 Rebase 과정, 나중에 master 브랜치를 fast-forward 시킨다.

$ git checkout master
$ git merge experiment

이렇게 되면 결국 merge와 똑같이 합치는 관점에서는 다를 바가 없지만 rebase의 경우 좀 더 깨끗한 히스토리를 만들게 된다. Rebase 한 로그를 보면 선형으로 히스토리가 남게 된다.

 

더 자세한 명령어의 경우 아래 블로그에 나와 있다.

 

https://velog.io/@finelinefe/GIT-abort-rebase

 

GIT abort / rebase

다수의 상세한 작업을 필요로 할때 = Rebase (x)다수의 브랜치로 인해 커밋 히스토리를 정리하고자 할 때 = RebaseMerge 할 때 Conflict 및 다수 문제 상황으로 꼬였을 때 = abort예전 프로젝트 진행시에도

velog.io

 

728x90
반응형
Comments