git merge, 브랜치 병합 도구
git merge 기능
git merge
는 두 개 이상의 브랜치를 하나로 합치는 Git 명령어입니다.
일반적으로 작업 중인 브랜치에 다른 브랜치의 변경 사항을 반영할 때 사용하며, 이를 통해 여러 사람이 동시에 작업한 내용을 하나의 작업 흐름으로 통합할 수 있습니다.
- 브랜치 통합: 개발 작업을 진행하는 중에 각자 다른 브랜치에서 작업한 코드나 기능을 최종적으로 하나의 브랜치로 모을 때 사용합니다.
- 버전 관리 이력 유지: 병합된 변경 사항은 새로운 커밋을 생성하거나 (Three-Way Merge), 단순히 브랜치를 이동시켜(Fast-Forward Merge) 기록으로 남기기 때문에, 작업 이력과 충돌 해결 기록이 남습니다.
- 병합 전략: 서로 다른 작업을 통합할 때 Git은 기본적으로 공통 조상을 찾아 변경 사항을 결합하며, 필요에 따라
ours
나theirs
와 같은 병합 전략을 사용할 수 있습니다.
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이 해당 파일에 충돌 정보를 남깁니다. 충돌 해결은 다음과 같이 진행합니다.
- 충돌이 발생한 파일을 열어 충돌 부분을 확인하고 수동으로 수정합니다.
- 수정이 완료되면 파일을 스테이징합니다.
git add <file>
- 병합을 완료합니다.
git commit
병합 전략 지정 (옵션)
Git은 여러 병합 전략을 제공합니다. -X
옵션을 사용하여 ours
나 theirs
등의 병합 전략을 지정할 수 있습니다.
# 'ours' 전략으로 병합
git merge -X ours feature-branch
# 'theirs' 전략으로 병합
git merge -X theirs feature-branch
반응형
'Git' 카테고리의 다른 글
[Git] reset restore 작업 복구 커밋 되돌리기 (0) | 2024.06.16 |
---|---|
git stash, 작업 변경사항 임시저장 설명 (0) | 2024.06.12 |
댓글