TIL #41 Git - Rebase, squash

강경훈·2020년 10월 11일
0
post-thumbnail

Rebase

  • base : branch를 생성한 시점
  • rebase : branch를 생성한 시점을 변경

Why use rebase?

여러 사람과 작업을 하다가 보면 다른 사람이 작업한 코드가 master에 merge 되는 경우가 발생한다. 이 때 보통 업데이트 된 master을 pull을 한 뒤 현재 진행 중이던 branch에서 업데이트 된 master을 merge 한다.
이럴 경우 merge commit이 남게 되고 이는 commit 메세지를 관리 할 때 지져분해 질 수 있다.
위와 같은 상황에서 merge 대신 rebase을 하게 되면 merge commit이 남지 않을 뿐만 아니라 branch 하나 당 commit 메세지를 한개만 남겨 commit 메세지 관리에 용이하다.

What is concept of rebase

rebase는 말 그대로 base을 바뀌는 것이다. base는 해당 branch가 만들어 진 시점인데, 그 시점을 업데이트 되기 전 master에서 업데이트 된 master로 바꾸는 것이다.
이 때 업데이트 된 master는 작업하고 있던 branch와 conflict가 발생 할 수 있으며, conflict을 모두 해결하면 rebase을 완료 할 수 있다.
또한 squash 기능을 통해 그 동안의 commit 메세지를 하나로 통합 할 수 있다.

How to work rebase

  1. git rebase -i master

  2. 합칠 commit 선택

  • pick : 남길 commit
  • s : squash 할 commit
  • squash 이외의 여러 기능들
  1. commit 하나로 만들기
  • 그 동안 남긴 commit 메세지들을 지운다.
  • 새로 남길 commit 메세지를 작성한다.
  1. conflict 해결
  • 만약 conflict가 발생하게 되면 conflict 에러 발생
  • conflict 난 부분 해결
  • gti rebase --continue로 rebase 계속 진행(rebase가 진행 중에 conflict가 발생한 것)
profile
방랑하는 개발자

0개의 댓글