Git 병합 방식 비교: Merge vs Rebase

2025. 11. 10. 00:28·데이터 분석/04. Git

지금은  3 개의 브랜치를 만들고 마디를 뻗어봤습니다

이제는 이 브랜치를 다시 한 군데로 합치는 작업을 해보겠습니다

  • merge : 두 브랜치를 하나로 병합하는 것
  • rebase : 한 가지를 다른 가지로 재배치하는 것

우리는 main브랜치를 중심 브랜치로 두고 작업을 해보겠습니다

방법1. merge

분기된 지점부터 메인 브랜치와 그외 브랜치에서 만들어진 변경 사항들이 메인 브랜치의 커밋으로 모이게 됩니다

먼저 main브랜치와 add-coach 브랜치를 merge방식으로 병합해 보겠습니다

A 브랜치에서 B브랜치의 작업을 가져올 경우 이를  A브랜치에서 실행해야합니다

git switch main

그리고 add-coach 브랜치를 병합해보겠습니다

merge 과정도 새로운 커밋을 만드는 것이므로

이처럼 자동으로 작성된 커밋 메시지를 결제하는 과정을 거칩니다

그럼 이렇게 두 브랜치를 병합한 새로운 커밋이 만들어진 것을 볼 수 있고,

이들 각각에서 만든 변경 사항들이 모두 적용된 것을 볼 수 있습니다.

여기서! add-coach 브랜치가 특정 커밋에 남아있는 것을 확인할 수 있습니다

이 브랜치는 그 역할을 완수했으므로 삭제해주겠습니다

git branch -d add-coach

 

add-coach의 모든 커밋은 main으로 병합되었기 때문에 소문자 d 옵션으로 일반 삭제가 가능합니다

그러면 갈라졌다 합쳐진 부분은 남아 있지만 add-coach란 표시는 사라진 것을 확인할 수 있습니다

merge방식은 사용한 브랜치를 삭제하더라도 흔적을 내역에 남기게 된다는거 이해하셨죠?

 

그리고 이 merge도 하나의 커밋이기 때문에 reset이 가능합니다!

git reset --hard 해시코드

이전으로 돌아갔고 두 브랜치가 다시 나뉘어 있는 것을 확인할 수 있습니다


방법2. rebase

아예 해당 브랜치를 떼어다가 대상 브랜치로 옮겨 붙이는 방법, 즉 재배치하는 방식입니다

그 결과로 기존 브랜치에 옮겨온 커밋과 같은 작업들을 추가로 진행한 것과 같은 결과물이 만들어집니다

 

rebase는 옮겨붙여질 가지이기 때문에 잔가지에서 실행해야합니다

new-teams라는 브랜치에서 발생한 두 커밋을 모두 main 브랜치로 재배치하겠습니

 

git rebase 커밋을 이어 붙일 대상 브랜치

 

우리는 이 대상 브랜치가 main이 되겠죠?

이 작업은 새로운 커밋을 작성하는 것이 아닌 기존의 커밋을 옮기는 것이므로 따로 커밋 메시지를 작성하지 않습니다

 이제 main브랜치를 new-teams가 위치한 끝마디로 옮겨주는 fast-forward만 해주면 됩니다

(fast-forward :  중간 마디에 있는 브랜치를 그보다 위에 있는 브랜치로 옮겨주는 작업)

git merge new-teams

 

new-teams 커밋도  역할을 다했기 때문에 제거해주면

git branch -d new-teams

모든 브랜치들이 정리되고 main브랜치만 남은 것을 확인할 수 있습니다

 

이 두 방법은 결국 다른 브랜치에서 한 것을 합치는 작업이므로 결과는 같지만

merge의 경우 이를 실행한 뒤에도 해당 브랜치의 흔적이 이처럼 내역에 남는 반면

rebase는 대상 브랜치에서 커밋한 것과 같은 모습이 되므로 이전에 어떤 브랜치를 사용했는지 보이지 않게 됩니다

 

 

 

 

'데이터 분석 > 04. Git' 카테고리의 다른 글

Merge vs Rebase: 충돌이 일어난 이유와 해결하는 방법  (0) 2025.11.10
Git branch 첫걸음 : 생성, 삭제, 이름 변경  (0) 2025.11.09
SourceTree로 커밋해보기  (0) 2025.11.05
다른 버전으로 돌아가는 방법 3가지(reset, revert, checkout)  (0) 2025.11.05
새로운 버전 만들기  (0) 2025.11.05
'데이터 분석/04. Git' 카테고리의 다른 글
  • Merge vs Rebase: 충돌이 일어난 이유와 해결하는 방법
  • Git branch 첫걸음 : 생성, 삭제, 이름 변경
  • SourceTree로 커밋해보기
  • 다른 버전으로 돌아가는 방법 3가지(reset, revert, checkout)
Growth DA Log
Growth DA Log
Growth DA Log 님의 블로그 입니다.
  • Growth DA Log
    Growth DA Log님의 블로그
    Growth DA Log
  • 전체
    오늘
    어제
    • 분류 전체보기 (125)
      • TIS_COMPANY (6)
      • 코딩 테스트 (61)
        • 01. Python (3)
        • 02. SQL (58)
      • 데이터 분석 (53)
        • 01. BigQuery (9)
        • 02. GA4 (1)
        • 02-1. GA4를 더 잘 다루기 위한 마케팅 개.. (5)
        • 03. streamlit (5)
        • 04. Git (12)
        • 05. 데이터 엔지니어링 (3)
        • 06. 데이터 모델링 (11)
        • 07. Excel (0)
        • 08. Tableau (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    윈도우함수
    ROW_NUMBER
    프로그래머스
    코딩테스트
    DENSE_RANK
    이행성
    코테
    Reset
    git
    tableaubootcamp
    SQL
    코드잇스프린트후기
    solvesql
    streamlit
    revert
    rank
    AARRR
    cross_join
    쿼리테스트
    tableau
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Growth DA Log
Git 병합 방식 비교: Merge vs Rebase
상단으로

티스토리툴바