로고로고

[Week2] Git 브랜치 병합

2024년 10월 26일

Git 브랜치 병합(Merge)은 서로 다른 브랜치에서 작업한 내용을 하나로 통합하는 과정

 

병합의 개념

 

  • 병합(Merge)은 두 개 이상의 커밋 히스토리를 하나로 합치는 것
  • git merge는 현재 체크아웃된 브랜치에 다른 브랜치의 변경사항을 가져와서 반영

예시:main 브랜치에서 feature/login 브랜치를 병합하려면 아래처럼 동작

 

병합 방식

1. Fast-forward Merge (빠른 병합)

  • 브랜치가 일직선으로 연결되는 경우, 새로운 커밋 없이 그냥 포인터만 앞으로 이동함
  • 히스토리가 깔끔하지만, 병합 흔적이 남지 않음
git checkout main
git merge feature/login --ff-only

2. 3-way Merge (일반 병합)

  • 공통 조상 커밋을 기준으로, 병합 커밋을 새로 생성
  • 다양한 브랜치 히스토리를 유지하며 병합 흔적이 남음
git checkout main
git merge feature/login

 

 

병합 충돌(Merge Conflict)

충돌 발생 조건

  • 두 브랜치에서 동일한 라인의 코드가 동시에 수정되었을 때 발생

해결 방법

  1. Git이 충돌 파일에 conflict 마커 삽입
<<<<<<< HEAD
main 브랜치의 코드
=======
feature 브랜치의 코드
>>>>>>> feature/login
  1. 수동으로 원하는 코드로 수정
  2. 수정한 파일을 git add로 스테이징
  3. git commit으로 병합 완료

 

병합 명령 요약

명령어설명
git merge <branch>현재 브랜치에 다른 브랜치를 병합
git merge --no-ff <branch>병합 커밋을 반드시 남기도록 강제
git merge --abort충돌 시 병합 취소
git log --graph병합 히스토리 확인