Git - Merge vs Rebase

김정환·2024년 9월 10일
0
post-thumbnail

개념잡기

Git으로 원격 저장소에 자료를 올리는 것을 push라하며, 반대로 자료를 다운받는 것을 pull이라고 한다.

원격 브랜치를 받아오는 방법

1. pull

pull은 다음 두 과정이 합쳐진 것으로 볼 수 있다.

  • git fetch
    원격 저장소에 변경사항이 있는지 확인하는 것.
  • git merge
    원격 저장소에 있는 브랜치를 합치는 것(병합).

즉, pull은 변경 내역을 확인하고 병합하는 것이라고 생각하면 편하다.

2. fetch + rebase

  • rebase
    베이스를 재정의하여 커밋 히스토리를 조작한다.

새로운 브랜치를 만들면 원본이 된 브랜치가 base가 된다.
Rebase를 사용하면 파생된 브랜치의 원본을 최신 브랜치로 변경해서 합치고 base를 새로운 베이스로 지정한다.

이렇게하면 결과적으로 하나의 브랜치에서 모든 작업이 진행된 것처럼 보인다.

Merge vs Rebase

Merge의 특징

  • 충돌이 일어나면 한번에 해결 가능.
  • 어떤 브랜치에서 merge가 발생했는지 알 수 있음.
  • 브랜치와 커밋이 많아지면 히스토리가 복잡해져 알아보기 어려움.

Rebase의 특징

  • 충돌이 일어난 부분부터 하나씩 해결.
  • 하나의 브랜치로 깃 커밋 히스토리를 정리할 수 있음.
  • Rebase가 이루어진 브랜치의 커밋이 새로 생성됨.

Rebase 사용 시 주의점

  • 원격 저장소에 올라간 커밋을 Rebase하는 경우, 기존에 이미 올라간 기능이 한번 더 덧씌워져서 올라감.
    다시 말해서, 하나의 커밋이 히스토리에 두번 올라감.

Rebase는 가급적 로컬에서만 사용하는 것이 좋을듯.

profile
만성피로 개발자

1개의 댓글

comment-user-thumbnail
2024년 9월 10일

저도 어제 말하고 나서 찾아봤는데, 팀프로젝트에는 맞지않는 방식일듯해용 ㅎㅎ; 무능한 클라우드..

답글 달기