#36 Git - Rebase 1/3

김현준·2022년 12월 29일
0

GIT

목록 보기
36/41
post-thumbnail

이번시간에는 rebase 에 대해 알아보겠습니다.
이와 대조되는 기능은 merge 입니다.

rebase 도 병합을 하는 방법이지만 merge 와는 결과가 좀 다릅니다.

일단 merge 부터 알아봅시다.

일단 처음에 Master 이라는 branch 가 있다고 가정해봅시다.

Master 에서 commit 을 한번 한 후에 feature 라는 branch 를 새로 만들었습니다.

faeture 에서 새로운 커밋을 생성했습니다.

한번더 feature 에서 커밋을 생성했습니다.

이후 master 에서 커밋을 2번했습니다. 이때 Merge 를 통해 Master 의 내용을 feature 로 가져오고 싶으면 어떻게 해야할까요? Git branch feature 를 하고 Git merge master 를 하면 됩니다.

Featuremaster 의 최신 commit 이 공통의 조상으로 하는 새로운 commit 이 만들어집니다. 이는 3 way merge 를 통해 자동으로 병합해주고 불가능할 경우에은 conflict 가 발생해서 사람이 고치도록 합니다 , 그리고 featuremaster 의 모든 커밋을 담고있습니다.

Rebase 에 대해 이제 알아보겠습니다. Basefeture 입장에서 base 는 빨간 원을 의미합니다. 왜냐하면 feature 에서 파생된 지점이 master 인데 , featuremaster 가 같은 공통조상이기 떄문입니다. rebasebase 를 바꾼다는 것인데 , feature 에서 파생된 master 의 최신 commit 으로 feature 로 바꾼다는 듯입니다.

Git checkout feature , Git rebase master 라고 해주면 임시저장소가 만들어 지고 feature 가 만들어놓은 22 개의 commit 이 임시저장소로 저장되고 featuremaster 의 최신 commit 으로 checkout 됩니다. 이후 featurecommit 이 사라집니다. 그리고 임시저장된 commit 들은 master 의 최신 commit 과 병합을 시킵니다.

임시저장소에있는 내용을 master 와 병합한 후에 feature 를 가장 최신으로 이동해줍니다. 이것이 rebase 입니다.

Merge 와 공통점은 feature 는 결과적으로 같은 커밋을 가지고 있습니다. 왜냐하면 자기가 작업한 내용과 master 가 작업한 내용을 모두 가지고 있기 때문입니다.

차이점은 merge 같은 경우는 히스토리가 병렬로 나아가서 보기 어렵지만 Rebase 는 일렬로 히스토리가 나아가기 때문에 보기 편합니다.

단점은 rebase 는 어렵고 위험하기 때문에 조심해야합니다. Mergerebase 에 비해 조금 더 쉽고 더 안정적입니다.

지금까지 mergerebase 에 대해 알아보았고 그 차이점에 알아보겠습니다.
다음에는 실습을 해보겠습니다.

여기까지 하도록 하겠습니다.

profile
울산대학교 IT융합학부 22학번

0개의 댓글