Menu
Coddy logo textTech

Git Rebase vs Merge

마지막 업데이트

git mergegit rebase는 둘 다 한 브랜치의 작업을 다른 브랜치로 합칩니다. git merge는 두 히스토리를 병합 커밋으로 묶어 무슨 일이 있었는지 정확히 보존합니다. git rebase는 여러분의 커밋을 하나씩 다른 브랜치 위에 다시 적용해 깔끔하고 선형적인 히스토리를 만들지만, 그 과정에서 커밋을 다시 씁니다.

황금률: 다른 사람이 이미 pull한 커밋은 절대 rebase하지 마세요. 두 가지 모두 터미널 플레이그라운드에서 시도해 보세요 — 브라우저 안의 진짜 셸입니다.

나란히 비교

Behaviorgit mergegit rebase
히스토리 모양병합 커밋이 있는 분기 형태선형
커밋을 다시 씀아니요
공유 브랜치에서 안전함아니요
정확한 히스토리를 보존함아니요
언제 병합됐는지 추적하기 쉬움더 어려움

구문

CommandWhat it does
git merge featurefeature를 현재 브랜치에 병합
git merge --no-ff feature항상 병합 커밋을 생성
git rebase main현재 브랜치의 커밋을 main 위에 다시 적용
git rebase -i HEAD~3최근 커밋 3개를 대화형으로 편집
git rebase --abort진행 중인 rebase를 취소

Git rebase vs merge 자주 묻는 질문

git rebase와 git merge의 차이는 무엇인가요?
git merge는 두 브랜치의 히스토리를 잇는 새 병합 커밋을 생성해 둘을 합치며, 무슨 일이 있었는지에 대한 정확한 기록을 유지합니다. 반면 git rebase는 여러분의 커밋을 다른 브랜치 위에 다시 적용되도록 옮겨 일직선 히스토리를 만들지만, 그 커밋들을 새 해시로 다시 씁니다. merge는 히스토리를 보존하고, rebase는 깔끔함을 위해 히스토리를 다시 씁니다.
언제 merge를 쓰고 언제 rebase를 써야 하나요?
완성된 브랜치(특히 공유된 것)를 통합할 때는 merge를 쓰세요 — 안전하고 비파괴적입니다. 공유하기 전에 자신의 로컬 커밋을 정리하거나, 기능 브랜치를 최신 main 위로 업데이트해 깔끔한 히스토리를 만들 때는 rebase를 쓰세요. 많은 팀이 로컬에서 rebase한 뒤 main에 merge합니다.
rebase의 황금률은 무엇인가요?
다른 사람이 이미 작업의 기반으로 삼은 커밋 — 보통 공유 브랜치에 push한 모든 것 — 은 절대 rebase하지 마세요. rebase는 커밋을 다시 쓰기 때문에, 그렇게 하면 다른 모든 사람이 갈라진 히스토리를 맞춰야 합니다. 로컬의 push하지 않은 커밋에는 자유롭게 rebase하고, 이미 공개된 것에는 merge(또는 revert)를 사용하세요.
rebase와 merge 중 어느 쪽이 충돌이 더 적나요?
둘 다 충돌을 피하지는 못하지만, 충돌이 드러나는 방식이 다릅니다. merge는 병합 커밋에서 모든 충돌을 한 번에 해결합니다. rebase는 각 커밋이 다시 적용될 때마다 커밋 단위로 충돌 해결을 요구할 수 있습니다. 총 작업량은 비슷하며, rebase는 그것을 나누어 분산할 뿐입니다.
이걸 온라인에서 연습할 수 있나요?
네. 터미널 플레이그라운드를 열면 브라우저 안의 진짜 셸에서 git mergegit rebase를 실행할 수 있습니다 — 설치할 것이 없습니다. Coddy의 무료 대화형 Git 강좌에서도 병합과 rebase를 단계별로 다룹니다.
Coddy programming languages illustration

Coddy로 Git 배우기

시작하기