본문 바로가기
BE 공부

merge와 rebase

by 꼬질꼬질두부 2024. 12. 12.

 

🛤️ 상황 예시

학교 프로젝트를 하고 있다고 가정해봅시다:

  • develop 브랜치: "메인 작업 노트"
  • feature/homework 브랜치: "개인 과제 작업 노트"

두 노트에서 작업을 했고, 이제 노트를 합쳐야 하는 상황입니다.


1. merge: 작업 흔적을 그대로 합치기

merge는 두 노트를 합칠 때, 각자의 작업 흔적을 모두 남기는 방식입니다.
쉽게 말해, 두 사람의 기록을 그냥 옆에 이어붙인다고 보면 됩니다.

  • 결과: 새로운 "합친 기록"이 생기지만, 각자의 기록은 그대로 남습니다.
  • 히스토리: 작업 과정을 시간순으로 볼 수 있습니다.

🖊️ 예:

  1. develop에 "학교 시간표 작성"이 기록되어 있음.
  2. feature/homework에 "과제 초안 작성"이 기록되어 있음.

merge를 하면:

* (merge commit) 과제와 시간표를 합쳤다
|\
| * 과제 초안 작성 (feature/homework)
|/
* 학교 시간표 작성 (develop)
  • 장점: 작업의 과정을 그대로 보존합니다.
  • 단점: 히스토리가 복잡해질 수 있습니다.

2. rebase: 작업을 다시 쓰기

rebase는 두 노트를 합칠 때, 작업을 새로 정리해서 하나의 깔끔한 노트로 만드는 방식입니다.
쉽게 말해, 한쪽의 작업을 다른 작업 위에 다시 써서 합칩니다.

  • 결과: 두 작업이 마치 처음부터 같이 진행된 것처럼 보입니다.
  • 히스토리: 작업 과정이 직선형으로 정리됩니다.

🖊️ 예:

  1. develop에 "학교 시간표 작성"이 기록되어 있음.
  2. feature/homework에 "과제 초안 작성"이 기록되어 있음.

rebase를 하면:

* 과제 초안 작성 (rebased feature/homework)
* 학교 시간표 작성 (develop)
  • 장점: 히스토리가 깔끔해집니다.
  • 단점: 작업 과정을 다시 쓰는 것이므로, 충돌(conflict)이 생기기 쉽습니다.

🚦 merge와 rebase의 선택 기준

  1. 팀 협업이 많고 기록이 중요할 때:
    merge를 사용하세요. 작업 과정을 그대로 남기기 때문에, 누가 언제 무엇을 했는지 알기 쉽습니다.
  2. 개인 프로젝트이고 기록을 깔끔히 정리하고 싶을 때:
    rebase를 사용하세요. 히스토리가 직선형으로 정리되어 나중에 이해하기 쉽습니다.

🎨 간단 비교표

  Merge Rebase
히스토리 기록을 모두 보존 기록을 깔끔히 정리
충돌 처리 상대적으로 쉬움 충돌이 자주 발생할 수 있음
협업 협업 시 적합 협업 시 주의 필요
장점 작업 과정을 그대로 볼 수 있음 직선형 히스토리로 정리되어 깔끔함
단점 히스토리가 복잡해질 수 있음 작업 과정을 다시 쓰는 데 시간 필요

🔑 기억해야 할 핵심

  • merge: 두 작업을 그대로 합친다.
  • rebase: 한 작업을 다른 작업 위로 다시 쓴다.

 

댓글