Git Rebase

더미벨·2022년 7월 5일
0

지금까지는 프로젝트를 브랜치들을 병합할 때 merge를 사용했지만, 오늘 rebase를 통해 병합하는 방법에 대해 배웠다.

git rebase를 사용하면 git merge를 사용할 때의 문제점들을 해결할 수 있다.


📍 Git Merge

Git Merge를 사용할 때의 문제점

  1. 불필요한 merge commit 생성
    모든 feature branch마다 merge commit이 남기 때문에 main 브랜치를 공유하는 개발자가 많고, 프로젝트의 규모가 클 경우 branch history가 지저분해진다.
  2. 복잡한 프로젝트 history
    독립된 브랜치에서 로직 하나를 작성하고 수정하더라도, 다른 작업과 그 내역에 겹쳐 구분하기가 어려워진다.


📍 Git Rebase

Git Rebase의 장점

  1. 불필요한 merge commit 제거.
    병합할 때마다 commit이 생성되는 merge와 다르게 rebase시에는 rebase commit이 따로 생성되지 않는다.
  2. 같은 작업을 진행한 commit끼리 모아주기 때문에 history를 파악하는 것이 용이하다.

BUT!!!

각각의 commit과 conflict가 발생할 수 있다. rebase를 하면 이전의 commit들까지 하나씩 비교를 하기 때문이다. 따라서 미리미리 conflict를 해결하고 하나의 commit으로 합쳐두는 것이 좋다.


✨Rebase 순서✨

  1. rebase할 때 명령어를 git rebase -i main라고 입력하면 squash를 사용할 수 있다.

    • pick: 남길 commit(주로 가장 오래된 commit을 pick)
    • s(squash): 합칠 commit
  2. :wq!를 통해 창을 빠져나온다.

  3. 최종적으로 rebase된 commit의 내용을 작성하기 위한 수정용 에디터가 뜬다.

  4. 현재까지 적은 commit message가 모두 나타나는데, 불필요한 내용을 제거하고 현재 수정 내역에 대한 commit message를 작성한다.

  5. Esc -> :wq! 저장하고 에디터에서 빠져나온다.

  6. push를 한다.
    이 때, 에러메시지가 뜰 것이다.
    rebase는 commit history를 관리하는 역할을 한다. 수정 사항이 생긴 후 다시 rebase하면 history가 무조건 달라지는데, git은 history가 다른 branch의 push를 허용하지 않기 때문에 에러가 발생한다.
    그렇기 때문에 git push origin 브랜치명 -f를 입력해 force push를 진행한다.

profile
프론트엔드 개발자👩‍💻

0개의 댓글