Git Rebase로 브랜치 단순화 하기

마라탕천재 ㅣ 2024. 8. 7. 01:00

1. git rebase란 ?

말 그대로 브랜치의 기반(base)을 변경하는 작업이다.

브랜치를 병합하는 방법으로는 merge와 rebase가 있는데, 두 방법의 차이는 다음과 같다.

  • merge : 병합 기록을 남기면서 작업 (머지 커밋이 남음)
  • rebase : 해당 베이스를 가지고 브랜치를 재정렬 (커밋 기록을 남기지 않음)

왼: merge를 사용한 경우 / 오: rebase를 사용한 경우

깃 브랜치의 모양이 상당히 많이 차이나는 것을 볼 수 있다.

따라서 기록이 불필요한 병합의 경우에는 rebase를 사용하는 것이 적절하다.

 

 

2. git base 사용법

dev를 기준으로 rebase한다고 가정하겠다.

1)  git checkout dev

1-1) 이 때 에러가 발생한다면?

수정사항을 저장하지 않아서 그렇다. 다음 두 가지 방법 중 한 가지를 사용한다.

  • git add . → git commit -m "메세지"
  • git stash → 병합 후 → git stash pop

 

2) git pull origin dev

 

3) git checkout [작업하던 브랜치명]

사진 상으로 뭔가 오류가 생겼지만 일단 넘어간다.

 

4) git rebase dev

4-1) 이 때 오류가 생긴다면?

rebase의 근원 브랜치와 병합하면서 충돌이 생긴것이니 충돌을 해소해준다.

4-2) 충돌 해소 후 git rebase --continue 를 입력하면 정상적으로 실행된다.

 

 

3. git rebase 사용 시 주의 사항

  • 공개 브랜치에서의 사용 주의: 이미 원격 저장소에 push되어 다른 개발자들과 공유된 브랜치에서는 rebase를 사용하지 않는 것이 좋다.
  • 충돌 해결의 복잡성: rebase 과정에서 충돌이 발생할 수 있으며, 여러 커밋에 걸쳐 반복적으로 충돌을 해결해야 할 수 있다.
  • 히스토리 변경: rebase는 커밋 히스토리를 변경하므로, 원래의 작업 순서와 시간이 달라질 수 있다.