[Git] Git 브랜치 병합(Merge)

이룸·2026년 3월 2일

위클리페이퍼

목록 보기
4/15

Git 브랜치 병합(Merge) 방법과 특징

Git에서 분기된 브랜치(Branch)를 하나로 합치는 과정인 병합에는 크게 Merge, Squash & Merge, Rebase & Merge 세 가지 방식이 존재한다. 프로젝트의 규모, 팀의 협업 방식, 그리고 커밋 히스토리(기록)를 관리하는 목적에 따라 적절한 방식을 선택하는 것이 중요하다.


1. 일반 병합 (Standard Merge)

브랜치가 갈라졌다가 합쳐진 모든 흐름과 각각의 커밋 내역을 있는 그대로 보존하는 가장 기본적인 병합 방식이다. 두 브랜치의 변경 사항을 합친 새로운 '병합 커밋(Merge Commit)'을 생성한다.

  • 작동 방식: 갈라져 나온 작업 브랜치의 변경 사항과 타겟 브랜치의 최신 상태를 하나로 합친다.
  • 장점
    • 실제 개발이 진행된 작업 흐름을 있는 그대로 추적하고 파악하기에 매우 용이하다.
    • 어떤 브랜치에서 어떤 커밋들이 만들어져 언제 합쳐졌는지 맥락을 완벽히 보존한다.
  • 단점
    • 프로젝트 참여자가 많아지고 브랜치가 늘어나면, 히스토리 그래프가 거미줄처럼 매우 복잡해져 가독성이 떨어진다.

2. 스쿼시 병합 (Squash & Merge)

작업 브랜치에 있는 모든 자잘한 커밋을 단 1개의 커밋으로 압축(Squash)하여 타겟 브랜치에 합치는 방법이다.

  • 작동 방식: 작업 브랜치의 전체 변경 사항을 모아 타겟 브랜치(예: main)에 하나의 새로운 커밋으로 추가한다. 병합 후 작업 브랜치의 원래 커밋들은 메인 히스토리에 남지 않는다.
  • 장점
    • 오타 수정, 여백 조절 등 의미 없는 자잘한 커밋들을 깔끔하게 하나로 묶을 수 있다.
    • 메인 브랜치의 기록이 매우 직관적이고 깨끗해진다.
  • 단점
    • 작업 브랜치 내에서의 상세한 개발 과정이나 개별 커밋 내역은 합쳐진 후에 확인할 수 없다.
    • 추후 특정 변경 사항이나 버그의 원인을 파악할 때(디버깅) 단위가 너무 커서 추적이 어려울 수 있다.

3. 리베이스 병합 (Rebase & Merge)

내 작업 브랜치의 시작점(Base)을 타겟 브랜치의 최신 커밋 위치로 이동(Re-base)시켜, 마치 처음부터 한 줄로 이어서 작업한 것처럼 병합한다.

  • 작동 방식: 작업 브랜치의 커밋들을 타겟 브랜치 끝에 하나씩 순서대로 다시 이어 붙인다. 새로운 병합 커밋(Merge Commit)을 만들지 않는다.
  • 장점
    • 브랜치가 갈라진 흔적 없이 커밋 히스토리가 완전한 직선(선형)으로 깔끔하게 유지된다.
    • 프로젝트의 진행 상황을 시간순으로 파악하기 좋다.
  • 단점
    • 여러 커밋을 이어 붙이는 과정에서 충돌(Conflict)이 발생하면, 병합할 때 한 번에 해결하는 일반 Merge와 달리 각 커밋마다 충돌을 해결해야 할 수도 있어 과정이 까다롭다.
    • 이미 원격 저장소에 공유된 커밋의 히스토리를 조작하게 되므로 주의가 필요하다.

💡 요약: 언제 어떤 방식을 써야 할까?

병합 방식추천 상황특징
Merge브랜치의 분기와 병합 기록을 완벽히 남겨야 할 때히스토리 보존 (그래프 복잡해짐)
Squash자잘한 커밋이 많아 메인 브랜치를 하나로 깔끔하게 유지하고 싶을 때단일 커밋으로 압축 (상세 기록 유실)
Rebase히스토리를 직선으로 만들어 가독성을 극대화하고 싶을 때선형 히스토리 (충돌 해결 까다로움)
profile
내 꿈은 풀스택 개발자

0개의 댓글