[TIL] 36. git merge, rebase

김지수·2024년 6월 11일

TIL

목록 보기
36/53

리베이스(rebase)와 병합(merge)은 둘 다 Git에서 브랜치를 통합하기 위해 사용하는 방법이지만, 그 작동 방식과 결과는 다릅니다.

병합(Merge)

병합은 두 브랜치를 통합할 때 사용됩니다. 병합을 수행하면 두 브랜치의 히스토리를 하나로 합치고, 새로운 커밋이 생성됩니다. 이 새로운 커밋은 두 부모를 가지며, 브랜치가 합쳐졌음을 나타냅니다.

예를 들어, 브랜치 A와 브랜치 B가 있다고 가정합시다. 브랜치 A에서 병합을 수행하면 다음과 같은 형태가 됩니다

    A
   / \
  B   C (merge commit)
  • 병합은 모든 히스토리를 보존합니다.
  • 병합은 충돌을 해결하는 경우에만 필요한 부분을 처리합니다.
  • 병합 커밋이 생성되어 병합 히스토리가 남습니다.

리베이스(Rebase)

리베이스는 한 브랜치의 변경사항을 다른 브랜치의 끝으로 이동시키는 방법입니다. 리베이스를 수행하면 히스토리가 재작성되며, 커밋이 재배치됩니다. 이를 통해 히스토리가 보다 직선적으로 보입니다.

예를 들어, 브랜치 A와 브랜치 B가 있고, B를 A 위로 리베이스하면 다음과 같은 형태가 됩니다.

A---B---C
  • 리베이스는 히스토리를 재작성합니다.
  • 리베이스는 충돌이 발생하면 커밋마다 충돌을 해결해야 합니다.
  • 리베이스 후에는 병합 커밋이 없고 히스토리가 직선적으로 정리됩니다.

주요 차이점

병합(Merge)

  • 히스토리를 보존합니다.
  • 병합 커밋을 생성하여 병합 지점을 표시합니다.
  • 충돌 해결 시 충돌 커밋을 만듭니다.

리베이스(Rebase):

  • 히스토리를 재작성하여 보다 깔끔한 직선형 히스토리를 만듭니다.
  • 병합 커밋이 생성되지 않습니다.
  • 충돌이 발생하면 커밋마다 충돌을 해결해야 합니다.

리베이스를 사용하면 히스토리가 깔끔해지지만 히스토리를 재작성하는 과정에서 문제가 발생할 수 있으므로 주의가 필요합니다. 특히 이미 공유된 브랜치에서는 리베이스를 피하는 것이 좋습니다. 반면 병합은 히스토리를 보존하기 때문에 안전하게 브랜치를 통합할 수 있지만 히스토리가 복잡해질 수 있습니다. 상황에 맞게 두 가지 방법을 적절히 사용하는 것이 중요합니다.

오늘의 회고


오늘로써 과제 발표를 하며 마무리 하였다. 내일 발제를 통해 새로운 팀원들을 만날예정이다.
이번 과제를 통해 한층 성장한 거 같다. 다음 팀 과제에서도 최선을 다해 목표 이상을 달성해야겠다.

profile
서툴고 부족한 점이 많지만, 배우고 발전하며 성장하기 위해 노력하겠습니다.

0개의 댓글