[Git] rebase와 merge의 차이

해피몬·2023년 6월 18일
post-thumbnail

개념

  • merge
    두 브랜치를 병합하여 새로운 커밋을 만듭니다. 병합의 흔적이 남고, 두 브랜치가 함께 생성한 커밋 기록이 합쳐져 히스토리에 남습니다.
  • rebase
    선택한 브랜치의 기반을 다른 브랜치의 최신 상태로 재설정합니다. 기존 커밋이 새로운 기반을 기준으로 재작성되어, 히스토리가 일직선으로 이어지며 깔끔해집니다.

Git merge

git merge <target-branch>

특징

1) 새로운 커밋 생성
두 브랜치를 병합하는 새로운 커밋(Merge Commit)이 생성됩니다.
2) 히스토리 유지
병합 과정이 히스토리에 남기 때문에, 협업 중 어떤 브랜치가 언제 병합되었는지 추적하기 쉽습니다.
3) 복잡한 히스토리
여러 브랜치를 자주 병합하면 커밋 히스토리가 복잡하게 분기될 수 있습니다.

사용 예시

1) 다른 팀원과 함께 협업할 때
여러 개발자들이 동시에 작업할 때는 merge로 각자의 브랜치를 결합해 히스토리 기록을 유지하는 것이 좋습니다.
2) 커밋 기록을 명확히 추적할 필요가 있을 때
프로젝트의 히스토리가 복잡하고, 여러 브랜치가 병합되는 순간을 추적해야 할 때 유용합니다.

Git rebase

git rebase <target-branch>

특징

1) 히스토리 일직선화
rebase는 지정한 브랜치를 기준으로 히스토리를 일직선으로 만듭니다. 병합 커밋 없이 깔끔한 히스토리를 유지할 수 있습니다.
2) 커밋 재작성
rebase 과정에서 커밋이 새로운 기반을 기준으로 재작성되며, 각 커밋의 해시가 변경됩니다.
3) 충돌 발생 시 수동 해결 필요
rebase 중 충돌이 발생하면 수동으로 해결한 후에 rebase를 계속 진행해야 합니다.

사용 예시

1) 자신의 작업을 메인 브랜치에 병합하기 전
혼자 작업 중인 브랜치를 최신 메인 브랜치에 맞추고 싶다면 rebase를 사용해 일직선 히스토리를 유지할 수 있습니다.
2) 커밋 히스토리를 깔끔하게 관리하고 싶을 때
브랜치가 많이 생성되지 않고, 히스토리를 단순하게 유지하고 싶은 경우에 유용합니다.

profile
슬기로운개발생활🤖

0개의 댓글