TIL 023 | git rebase

This Is Empty.·2021년 10월 20일
0

TIL

목록 보기
23/23
post-thumbnail
post-custom-banner

rebase ?

Git에서 한 브랜치에서 다른 브랜치로 병합하는 방법은 Merge이고, 다른 하나는 Rebase다.

experiment(c4)와 master(c3)을 합치는 가장 쉬운 방법은 git merge master이다. 두 브랜치의 마지막 커밋(c3, c4)와 공통 조상(c2)을 사용하는 3-way Merge로 새로운 커밋을 만들어 낸다.

c3에서 변경된 사항을 Patch로 만들고 이를 c4에 적용시키는 방식을 rebase라고 한다. 이 명령으로 한 브랜치에서 변경된 사항을 다른 브랜치에 적용할 수 있다.

즉, 다른 base tip 위에 커밋을 재 적용하는 것이다.

또, 여러개의 커밋을 하나로 합쳐 줄 수 있다.

작업을 하다보면 다른 브랜치로 이동해야 할 일이 생길때가 있는데, 잠시 임시 저장 용도로 commit을 하게된다. 그대로 push하게 되면 커밋로그가 너무 지저분하므로 이 커밋들을 하나로 깔끔하게 합칠때도 git rebase를 사용한다.

USE : commit history 하나로 합치는 방법

  1. feature branch에서 다음 명령어를 사용한다.
git rebase -i main

-i 옵션을 추가하면 대화형 모드로 rebase할 수 있다.
main을 기준으로 rebase 한다. 혹은 합치려는 n개의 커밋 이전으로 rebase한다.

  1. 가장 오래된 커밋(first commit)을 pick으로 두고 나머지는 s(squash)한다.

  2. 커밋 메시지를 정리한다.

  3. 커밋 로그 확인 후 잘 합쳐졌다면 브랜치에 push하거나, 다음 작업을 이어간다.

4-1. 이미 이전에 원격 저장소에 push한 적이 있으면 -f로 force push한다.(내 커밋 내용으로 덮어씌우는 위험부담이 따르므로 신중히 사용해야 한다.)

여러개의 커밋을 한번에 rebase를 하는것은 위험부담이 따르므로 되도록이면 커밋 로그가 3-4개 쌓여있을 때 rebase를 해주는것이 정신 건강에 좋다.

USE : main 브랜치와 병합하기

  1. main 브랜치에서 원격 저장소 main에 merge된 내용을 pull 받는다.
git pull origin main
  1. main과 병합 할 브랜치로 이동후 다음 명령어를 사용한다.
git rebase -i main
  1. conflict가 났다면 수정 후 다음 명령어를 사용한다.
git add .
git rebase --continue
  1. 커밋 로그 확인 후 잘 합쳐졌다면 브랜치에 push하거나, 다음 작업을 이어간다.

4-1. 이미 이전에 원격 저장소에 push한 적이 있으면 -f로 force push한다.(내 커밋 내용으로 덮어씌우는 위험부담이 따르므로 신중히 사용해야 한다.)

Git - Rebase하기
Git 도구 - 히스토리 단장하기

profile
Convinced myself, I seek not to convince.
post-custom-banner

0개의 댓글