Git Rebase

Leo·2023년 1월 13일
1
post-thumbnail

Merge와 Rebase

merge와 rebase는 모두 두 개의 브랜치를 하나로 병합하는 기능을 제공합니다.

Merge

feature 브랜치에서 main을 머지하면 머지 커밋이 생성됩니다.

머지 커밋은 '어떤 순간에 어느 브랜치의 변경사항이 머지되었다'는 정보를 주는 커밋으로 무의미 하지 않지만 다른 커밋에 비해 중요하지 않고, 깃 히스토리를 지저분하게 만듭니다.

Rebase

리베이스를 통해 머지 커밋을 만들지 않고 브랜치를 병합이 가능합니다.

feature 브랜치에서 main을 rebase 하면
feature가 가지고 있지 않은 main의 커밋들이 feature 브랜치로 들어오고 feature에서 작업했던 커밋들은 모두 맨 뒤로 정렬됩니다.

Rebase 특징

  • 커밋로그 순서가 커밋이 생성된 순서를 의미하지 않습니다.

  • feature의 커밋의 해시값이 변합니다.

    • 순서를 재정렬 하면서 커밋을 삭제 후 다시 생성합니다.
    • 커밋이 가지고 있는 내용은 변하지 않습니다.(생성 날짜, 변경 내용)
  • main브랜치의 내용을 처음부터 리베이스를 통해 병합하며 feature 브랜치를 진행하거나, 머지를 통해 머지 커밋을 만든 후, 리베이스로 재정렬 할 수 있습니다.(머지 커밋은 사라지게 됩니다.)

Rebase 사용 주의점

  • 리베이스를 하면 커밋을 지우고 새로 생성하는 작업이 진행되기 때문에 다른사람이 공유된 커밋이라면 리베이스 하면 안됩니다.

  • 리베이스도 브랜치를 병합하기 때문에 충돌이 발생할 수 있습니다.
    단, 머지 커밋처럼 충돌이 한번 발생하는 것이 아닌 커밋마다 여러번 발생할 수 있습니다.
    커밋이 많은 큰 기능의 브랜치를 리베이스로 머지하는 경우 충돌위험을 생각해야 합니다.

0개의 댓글