Git 머지(merge) 주요 방법정리

Git 머지(merge)는 서로 다른 브랜치의 변경사항을 하나로 합치는 작업입니다. 주요 방법들을 정리해드리겠습니다.

기본 머지 명령어

bash
# 현재 브랜치에 다른 브랜치를 머지
git merge <브랜치명>

# 예시: main 브랜치에 feature 브랜치를 머지
git checkout main
git merge feature

머지 유형

1. Fast-Forward 머지

  • 대상 브랜치가 현재 브랜치보다 앞서있을 때 발생
  • 브랜치 포인터만 앞으로 이동하여 머지
  • 별도의 머지 커밋이 생성되지 않음
bash
git merge feature  # Fast-forward가 가능한 경우

2. 3-way 머지

  • 두 브랜치가 서로 다른 커밋을 가지고 있을 때 발생
  • 새로운 머지 커밋이 생성됨
  • 두 브랜치의 공통 조상을 기준으로 머지

머지 옵션

–no-ff (No Fast Forward)

bash
git merge --no-ff feature
  • Fast-forward가 가능해도 강제로 머지 커밋 생성
  • 브랜치 히스토리를 명확하게 유지

–squash

bash
git merge --squash feature
  • 대상 브랜치의 모든 커밋을 하나로 압축
  • 머지 커밋은 생성되지 않고 스테이징 영역에 변경사항만 추가

–ff-only

bash
git merge --ff-only feature
  • Fast-forward가 가능할 때만 머지 수행
  • 불가능하면 머지 실패

충돌 해결

머지 중 충돌이 발생했을 때의 처리 과정:

bash
# 1. 머지 시도
git merge feature

# 2. 충돌 발생 시 상태 확인
git status

# 3. 충돌 파일 수정 후 스테이징
git add <충돌파일>

# 4. 머지 완료
git commit

충돌 표시 예시:

<<<<<<< HEAD
현재 브랜치의 내용
=======
머지하려는 브랜치의 내용
>>>>>>> feature

유용한 명령어

머지 상태 확인

bash
git status           # 머지 상태 확인
git diff --staged    # 스테이징된 변경사항 확인
git log --oneline --graph  # 그래프로 히스토리 확인

머지 취소

bash
git merge --abort    # 머지 진행 중 취소
git reset --hard HEAD~1  # 머지 완료 후 되돌리기 (주의!)

Git 머지(merge) 주요 방법정리

베스트 프랙티스

  1. 머지 전 준비
    • 작업 디렉토리를 깨끗하게 정리 (git status)
    • 최신 상태로 업데이트 (git pull)
  2. 브랜치 전략
    • feature 브랜치는 main으로 머지
    • --no-ff 옵션으로 명확한 히스토리 유지
  3. 충돌 최소화
    • 자주 머지하여 충돌 범위 줄이기
    • 코드 리뷰 후 머지 수행
  4. 머지 메시지
    • 의미 있는 커밋 메시지 작성
    • 머지 이유와 변경사항 명시

이러한 방법들을 상황에 맞게 선택하여 사용하시면 효율적인 Git 워크플로우를 구축할 수 있습니다.