Git Rebase

HYUK·2023년 3월 5일
0

git

목록 보기
1/3

1. git rebase란?

Git rebase는 두 개의 공통 Base를 가진 Branch에서 한 Branch의 Base를 다른 Branch의 최신 커밋으로 branch의 base를 옮기는 작업이다. 용어 그대로 베이스를 다시 설정하는 작업이다.

2. git merge의 특징

  • git merge는 쉽고 안전하지만, feature branch마다 merge commit이 남게되서 branch history가 지저분해지기 쉽다.

3. git rebase의 장점

  • 불필요한 merge commit 제거
  • 같은 작업을 진행한 commit 끼리 모을 수 있다.
  • 파생된 브랜치의 commit이력이 기준 브랜치와 같아지므로 작업 순서대로 커밋이력이 남아서 히스토리가 시간 순서대로 반영되어 보기 쉽니다.

4. rebase 사용방법

4-1 새로운 작업을 마치고 push 하기전

  • 해당 브랜치에서 git add . 후 commit을 하는 과정까지는 이전과 동일하나 push를 하기전 rebase과정을 거쳐주면 된다.

  • 우선 commit까지 남긴 후 'git rebase -i main을 입력한다.

  • vim창이 하나 나올텐데 창을 보게되면 commit이력이 나올것이다.

  • 그 이력중 가장 오래된 commit을 pick한다.

  • 나머지 커밋은 오래된 commit을 기준으로 squash를 한다.

  • 위에 예시 이미지 처럼 정리를 마친 후 vim창에서 나오게되면 또다른 vim창이 나올텐데 최종적으로 rebase된 커밋의 내용을 작성하는 부분이다.

  • 현재까지 적은 커밋 메세지가 전부 나타난다.

  • 불필요한 내용을 제거하고 현재 수정 내역에 대한 커밋 메세지를 작성한다.

  • 정리가 다 끝났다면 vim창을 나온 후 git log로 정리된 commit을 한번 더 확인 후 최종적으로 push를 진행 해 준다.

4-2 rebase 후 push 하기

  • rebase는 commit history를 정리하는 역할을 한다.

  • 같은 브랜치에서 rebase를 할때마다 history가 달라질 수 있다.

  • 수정사항이 추가로 생긴 후 다시 rebase하면 history가 달라질것이고 이로인해 git은 history가 다른 branch의 push를 허용하지 않는다.

  • 이때는 강제 push를 진행 해 주면 되는데, 'git push origin feature/login -f' 일반적인 push 명령어 과정에서 마지막에 -f옵션을 사용하여 force push를 진행한다.

profile
step by step

0개의 댓글