[Git] 브랜치 Merge와 커밋 히스토리 관리 (squash, rebase)
# Back-End/Git

[Git] 브랜치 Merge와 커밋 히스토리 관리 (squash, rebase)

 

개요

Git Flow 전략을 적용하여 여러 브랜치를 관리하려면 Merge의 옵션을 적절하게 사용하고, 커밋을 최대한 간단하게 하여 알아보기 쉽도록 하는 것이 중요하다.

커밋이 여러 개로 쪼개진다면 돌아갈 수 있는 분기가 많아지지만, 그 브랜치가 다른 브랜치에 Merge되고 관리되어야 한다면 쪼개진만큼 어느 시점으로 돌아가야 할지, 어떤 작업을 했는지 알아보기가 어렵다.

 

 

Merge란?

어떤 브랜치를 다른 브랜치에 반영하는 것

 

 

커밋 히스토리 관리의 필요성

  1. 어떤 작업을 했는지 명확하게 함
  2. 일관된 규칙으로 메시지를 작성
  3. Rollback 상황에서 대처하기 쉬움

 

 

Merge, Squash, Rebase

1. Merge 
브랜치를 합치기 위한 명령어

2. Squash
브랜치를 Merge할 때 사용할 수 있는 옵션

3. Rebase
브랜치의 커밋을 재배치하는 것

 

Merge

  • 가장 기본적인 병합 방법
  • Merge하려는 브랜치의 모든 커밋을 Merge될 브랜치에 포함시키면서, Merge 커밋 한 개 발생하며 병합

 

 

Squash

  • Merge하려는 브랜치의 모든 커밋과 Merge 커밋을 한 개로 만들어서 병합
  • 그래프에 따로 합쳐지는 선이 생기지 않음

 

 

 

 

Rebase

  • Merge하려는 브랜치의 모든 커밋을 하나로 정리한 후, Merge 커밋 한 개 발생하며 병합
  • Merge하려는 브랜치에서 Rebase 작업을 하고, 브랜치를 머지함

git checkout b
git rebase -i HEAD~2
(기준 커밋 선택, rebase)
(커밋 메시지 수정)
git checkout a
git merge --no-ff B

 

 

정리

Sqaush

  • Merge 하려는 브랜치의 커밋을 하나로 함축(squash)하며 Merge

 

Rebase

  • Merge 하려는 브랜치의 커밋을 하나로 만듦
  • 그 후 Merge
728x90