Git에서 branch merge 방법들과 각 방법의 특징

이진우·2024년 1월 14일
0

코드잇 프론트엔드

목록 보기
4/11
post-thumbnail

오느레~ 뻬이파~
Git branch merge의 방법인데용~
어케하는지 정?말! 궁금해요!(아님말고 ㅋ)

Git에서 branch merge하는 방법은 크게 2가지가있어요

  • git merge
  • git rebase

이제 이 둘이 어떻게 다른지 함 알아보죠!

git merge

git merge branchName

위의 명령어로 merge를 할 수 있어요.
현재 브랜치에 branchName의 내용을 가져와서 합치는 명령어랍니다.

기본은 그렇고 이 merge가 세부적으로는 2개로 또 나뉘게되는데요

  • fast-foward
  • 3-way-merge

fast-foward

이 친구는 merge하려는 브랜치와 분기한 브랜치의 부모가 같을 때 사용됩니다.
새로운 merge commit이 생기지 않고 현재커밋에 HEAD와 브랜치를 슥 가져와요

// branch 예시
					     /-main
o--o--o--o--o--o--o--o--o
                 /
              feat1
              
 이렇게 main에 feat1을 가져오려할 때 부모가 같을때는
 
 						  /--main, feat1
 o--o--o--o--o--o--o--o--o
 
 이렇게 새로운 커밋을 만들지 않고 병합한다는 말입니다~

3-way-merge

이 친구가 우리가 흔히 마주하는 merge일 듯 해요

// 1과 2, 3이 합쳐져 4를 만들어냄
		    /--o--3--/4--o--o
          /        /
o--o--o--1--o--o--2
        /
  여기가 분기점

이렇게 분기를 하고 commit을 생성하면 새로운 merge commit을 만들게 되는데용

  • base(조상)가되는 공통 커밋인 1
  • 작업 브랜치의 최신내용인 2
  • 합치려는 브랜치의 최신내용인 3

이렇게 3개가 합쳐져서 새로운 커밋을 만들어 내기 때문에 3-way-merge 라고 합니다.

git rebase

git rebase branchName

기본적으로는 이렇게 사용해요.
rebase는 말 그대로 base를 다시 지정한다는 말입니다.

// git rebase의 그래프
// 1의 base가 2로 재지정
// 이전 커밋들과 합치는 커밋이 그래프에 남지않음
			/--o--2--/3--o--o
          /       
o--o--o--o

위에 git merge와는 다른 그래프가나오는걸 볼 수 있죠?
리베이스는 Git의 커밋 그래프를 깔끔하게 유지하기 위해 사용해요.

전반적인 merge 과정

// 과정
git rebase 브랜치이름 or git merge 브랜치이름

비상! 컨플릭트남!
수정하셈
git add.
git rebase --continue
---------------------- 
(merge라면)
git commit -m" merge했어용~"

워땠나용?
이렇게 간단하게 merge의 방법과 특징을 알아봤는데용

  • merge : merge한 이력을 남겨야 할 때
    • fast-foward
    • 3-way-merge
  • rebase : 그래프를 깔끔하게 유지해야할 때

이렇게 사용한답니다.

profile
츄라이츄라이

0개의 댓글