본문 바로가기
Git

git merge, 브랜치 병합 도구

by 정권이 내 2024. 11. 7.

git merge, 브랜치 병합 도구

 

git merge 기능

git merge는 두 개 이상의 브랜치를 하나로 합치는 Git 명령어입니다.

일반적으로 작업 중인 브랜치에 다른 브랜치의 변경 사항을 반영할 때 사용하며, 이를 통해 여러 사람이 동시에 작업한 내용을 하나의 작업 흐름으로 통합할 수 있습니다.

  • 브랜치 통합: 개발 작업을 진행하는 중에 각자 다른 브랜치에서 작업한 코드나 기능을 최종적으로 하나의 브랜치로 모을 때 사용합니다.
  • 버전 관리 이력 유지: 병합된 변경 사항은 새로운 커밋을 생성하거나 (Three-Way Merge), 단순히 브랜치를 이동시켜(Fast-Forward Merge) 기록으로 남기기 때문에, 작업 이력과 충돌 해결 기록이 남습니다.
  • 병합 전략: 서로 다른 작업을 통합할 때 Git은 기본적으로 공통 조상을 찾아 변경 사항을 결합하며, 필요에 따라 ourstheirs와 같은 병합 전략을 사용할 수 있습니다.

 

git merge 동작 방식

  • Fast-Forward Merge: 브랜치가 연속된 상태일 때, 단순히 포인터를 이동하여 변경 내용을 통합합니다.
  • Three-Way Merge: 각 브랜치가 독립적인 커밋을 포함할 경우, 공통 조상을 기준으로 새로운 커밋을 만들어 두 브랜치의 변경 내용을 병합합니다.

 

기본 병합 방법 (Fast-Forward Merge)

Fast-Forward Merge는 두 브랜치의 변경 내용이 연속적일 때 사용됩니다. 이 경우 Git은 단순히 브랜치를 현재 커밋의 끝으로 이동하여 병합을 수행합니다.

 

아래 명령어를 실행하면 feature-branch의 변경 내용이 main 브랜치에 병합됩니다.

# 병합할 브랜치(main)로 체크아웃
git checkout main

# 병합하려는 브랜치를 지정하여 Fast-Forward Merge
git merge feature-branch

 

Three-Way Merge

Three-Way Merge는 병합하려는 두 브랜치가 서로 다른 커밋을 가질 때 발생하며, Git은 공통 조상을 기준으로 새 커밋을 생성하여 병합합니다.

병합 시 충돌이 발생할 경우 Git은 충돌 파일을 알려주며, 직접 충돌을 해결하고 병합을 완료해야 합니다.

# 병합할 브랜치로 체크아웃
git checkout main

# Three-Way Merge 수행
git merge feature-branch

 

병합 충돌 해결

병합 중에 충돌이 발생하면 Git이 해당 파일에 충돌 정보를 남깁니다. 충돌 해결은 다음과 같이 진행합니다.

  1. 충돌이 발생한 파일을 열어 충돌 부분을 확인하고 수동으로 수정합니다.
  2. 수정이 완료되면 파일을 스테이징합니다.
git add <file>

 

  1. 병합을 완료합니다.
git commit

 

병합 전략 지정 (옵션)

Git은 여러 병합 전략을 제공합니다. -X 옵션을 사용하여 ourstheirs 등의 병합 전략을 지정할 수 있습니다.

# 'ours' 전략으로 병합
git merge -X ours feature-branch

# 'theirs' 전략으로 병합
git merge -X theirs feature-branch
반응형

댓글