Learn

Merge냐 rebase냐

Git

두 브랜치를 합치는 두 가지 방법, 두 가지 다른 히스토리. 상황에 따라 선택하기.

한 브랜치의 변경사항을 다른 브랜치로 가져오고 싶을 때, Git은 두 가지 도구를 제공해요 : mergerebase. 각각 다른 히스토리를 만들고, 장단점이 달라요.

Merge : 실제 히스토리 보존

git merge는 두 브랜치를 가져와 두 역사를 하나로 합치는 merge commit을 만들어요. 그래프가 실제 상황에 충실해요 : 브랜치가 언제 분기했고 언제 통합됐는지 정확히 볼 수 있어요.

shell
git switch main
git merge my-feature

git log --graph 결과를 보면 두 평행선이 한 점에서 만나는 모습이에요. 읽기 쉽고, 추적 가능하고, 비파괴적이에요.

Rebase : 히스토리 선형화

git rebase는 commit들을 다른 브랜치의 끝에 재현해요. 결과 : 완벽하게 선형인 히스토리, 마치 항상 main의 최신 commit 이후에 작업한 것처럼 보여요.

shell
git switch my-feature
git rebase main

Git이 my-feature의 각 commit을 하나씩 이동시켜 main의 마지막 commit 이후에 재현해요. 히스토리가 merge commit 없이 직선이 돼요.

빠른 비교

MergeRebase
히스토리보존, merge commit 포함선형화, commit 재작성
공유 브랜치에 안전한가아니요
그래프 가독성실제 브랜치 표시깔끔하고 선형

어느 것을 언제 사용할까

  • Merge : feature를 main에 통합할 때, 어디서 왔는지 명확하게 추적하고 싶을 때. 협업 상황의 기본 선택이에요.
  • Rebase : pull request를 열기 전에 로컬 브랜치 히스토리를 정리할 때. git rebase main으로 최신 코드 위에 깔끔하게 PR을 적용해요.

일반적인 워크플로우 : my-feature에서 작업하고, git rebase main으로 불필요한 merge commit 없이 최신 상태로 맞추고, PR을 열어요. GitHub이 공식 merge commit으로 병합해요.

git-scm.com - git merge git-scm.com - git rebase

다음 단계를 열려면 단계를 체크하세요

코스로 돌아가기