[Git] Rebase

Sangwoo Park·2022년 5월 1일
0

Git

목록 보기
2/3
post-thumbnail

Git Rebase란?

  • 브랜치의 시작점(Base)를 특정 시점으로 옮기는 기능

언제 쓰나요?

👨‍💻 혼자 작업시

A 브랜치를 분기 후 커밋을 쌓는다.
그러다 A 브랜치 작업을 잠시 멈추고, B 브랜치를 작업 후 머지했다.
이후에 다시 A브랜치 작업을 마무리하고 머지하려고 한다.
이 때 B 브랜치에서 작업한 내용을 반영하고 싶다면 Rebase를 사용할 수 있다.

🤼‍ 협업시

브랜치를 분기 후 커밋을 쌓는다.
그런데 내가 분기한 시점 이후에 머지하려는 브랜치에 동료의 커밋이 업데이트 되어있다.
이 때 동료의 커밋 내역을 내 브랜치에 반영하고 싶다면 Rebase를 사용할 수 있다.

왜 쓰나요?

  1. 내 브랜치를 최신화 할 수 있다.
  2. 최신화 중 충돌이 일어났을 때, 로컬에서 resolve를 진행할 수 있다.
  3. 커밋 히스토리를 깔끔하게 관리할 수 있다.

어떻게 쓰나요?

base를 옮기려는 브랜치에 checkout 한 후 git rebase {branch name} 를 실행하면 현재 브랜치의 커밋들이 순서대로 하나씩 옮겨진다.

충돌이 없을 때 😆

바로 Successfuly rebased 메시지가 나오며 Rebase가 완료된다.

충돌이 있을 때 😫

해당 커밋의 충돌을 해결해야만 다음 단계로 넘어갈 수 있다.

다음 단계란?
1. 다음 커밋의 rebase 진행
2. rebase complete (더이상 rebase할 커밋이 없을 때)

해결 방법은 다음과 같다.
1 .해당 파일에 가서 충돌을 해결
2. 해당 파일들의 변화를 staging (ex. git add .)
3. git rebase --continue 를 입력하면 해당 커밋의 메세지를 수정하는 단계로 넘어간다.
4. 커밋 메세지 수정
5. 다음 단계로

취소하는법

git rebase --abort

abort의 뜻은 '중단시키다' 이다.

rebase의 충돌 해결 진행 중에 무언가 꼬였거나 되돌려야 할 때 abort를 하게 되면, 모든 변경사항을 버리고 rebase를 시작하기 전의 상태로 되돌아 온다.

마치며

rebase의 기본적인 기능인 base를 옮기는 기능에 대해서 다루었다.
하지만 rebase에는 interactive(-i)라는 무시무시한 기능이 또 있다.
개인적으로 rebase와 rebase -i는 아예 다른 기능이라고 생각한다.
interactive 사용법에 대해서도 추후에 포스팅 할 계획이다.

rebase 기능은 생각보다 쓰기 편하고 쉬운 기능이다.
처음엔 익숙하지 않겠지만, 실수했을 때 되돌리는 방법이 충분히 있다.
그러니 commit을 다루는 것에 대한 두려움이 있더라도 연습을 하다보면 금방 익숙해질 수 있을 것이다.

profile
going up

0개의 댓글