Files
claude-instructions/commands/git/merge.md

6.7 KiB

description, allowed-tools
description allowed-tools
브랜치를 안전하게 병합하고 충돌을 해결합니다
Bash(git merge:*)
Bash(git status:*)
Bash(git diff:*)
Bash(git log:*)
Bash(git branch:*)
Bash(git fetch:*)
Bash(git pull:*)
Bash(git reset:*)
Bash(git checkout:*)
Bash(git stash:*)

Claude 명령어: Merge

브랜치를 안전하게 병합하고 충돌을 자동으로 해결하는 Git 병합 전문 도구입니다.

사용법

/git:merge [브랜치명]           # 지정된 브랜치를 현재 브랜치에 병합
/git:merge                    # 대화형 병합 메뉴

주요 기능

1. 안전한 병합 프로세스

  • 병합 전 상태 점검 (uncommitted changes, conflicts)
  • 자동 백업 및 복구 지점 생성
  • 병합 충돌 자동 감지 및 단계별 해결 가이드

2. 다양한 병합 전략

  • Fast-forward: 선형 히스토리 유지
  • No-fast-forward: 병합 커밋 생성하여 브랜치 히스토리 보존
  • Squash: 여러 커밋을 하나로 압축하여 병합

3. 지능적 충돌 해결

  • 충돌 파일 자동 식별
  • 충돌 내용 시각적 표시
  • 단계별 해결 가이드 제공
  • 해결 후 자동 검증

프로세스

병합 전 검사 단계

  1. 현재 브랜치 상태 확인

    • Uncommitted 변경사항 확인
    • Working directory 정리 상태 점검
  2. 대상 브랜치 검증

    • 브랜치 존재 여부 확인
    • 원격 브랜치 동기화 상태 점검
    • 브랜치 간 분기점 분석
  3. 병합 가능성 사전 점검

    • Potential conflicts 미리 감지
    • 병합 후 예상 결과 미리보기

병합 실행 단계

  1. 자동 백업 생성

    • 현재 상태를 stash로 백업
    • 병합 전 커밋 SHA 기록
  2. 병합 전략 선택

    • Fast-forward 가능 여부 확인
    • 프로젝트 정책에 따른 전략 결정
  3. 병합 수행

    • 선택된 전략으로 병합 실행
    • 실시간 진행 상황 모니터링

충돌 해결 단계

  1. 충돌 파일 식별

    • 충돌이 발생한 모든 파일 나열
    • 충돌 유형별 분류 (content, delete/modify 등)
  2. 대화형 해결 프로세스

    • 파일별 충돌 내용 표시
    • 해결 옵션 제시 (ours/theirs/manual)
    • 실시간 해결 상태 추적
  3. 해결 검증

    • 모든 충돌 해결 확인
    • 문법 오류 및 빌드 테스트
    • 최종 커밋 생성

병합 전략

Fast-Forward 병합

Before:  A---B---C (main)
              \
               D---E (feature)

After:   A---B---C---D---E (main)
  • 선형 히스토리 유지
  • 브랜치 흔적 없음
  • 간단한 변경사항에 적합

No-Fast-Forward 병합

Before:  A---B---C (main)
              \
               D---E (feature)

After:   A---B---C-------F (main)
              \         /
               D---E----
  • 병합 커밋으로 브랜치 히스토리 보존
  • 기능 단위 추적 가능
  • 협업 프로젝트에 권장

Squash 병합

Before:  A---B---C (main)
              \
               D---E---F (feature)

After:   A---B---C---G (main)
                     (D+E+F를 압축한 단일 커밋)
  • 여러 커밋을 하나로 통합
  • 깔끔한 히스토리 유지
  • 실험적 커밋 정리에 유용

대화형 메뉴

🔀 Git Merge 메뉴

1. 📥 브랜치 병합 (Fast-forward)
2. 🔗 브랜치 병합 (No-fast-forward)
3. 📦 브랜치 병합 (Squash)
4. 🔍 병합 가능성 사전 확인
5. ⚡ 진행 중인 병합 완료
6. ❌ 병합 중단 및 되돌리기
7. 📊 병합 히스토리 확인

충돌 해결 가이드

충돌 유형별 해결법

1. 내용 충돌 (Content Conflict)

병합할 브랜치의 내용

해결 옵션:

  • ours: 현재 브랜치 내용 유지
  • theirs: 병합할 브랜치 내용 채택
  • manual: 수동으로 편집

2. 파일 삭제/수정 충돌

deleted by us:     src/component.js
modified by them:  src/component.js

해결 옵션:

  • 파일 삭제 유지
  • 수정된 내용 채택
  • 새로운 버전으로 재작성

3. 이름 변경 충돌

renamed:    src/old-name.js -> src/new-name1.js
renamed:    src/old-name.js -> src/new-name2.js

해결 과정:

  1. 적절한 파일명 결정
  2. 불필요한 복사본 제거
  3. 코드 참조 업데이트

충돌 해결 도구

자동 해결 도구

  • semantic merge: 의미론적 분석으로 자동 병합
  • whitespace normalization: 공백 차이 자동 정규화
  • import sorting: import 문 자동 정렬

수동 해결 지원

  • 충돌 구간 하이라이팅
  • 원본 파일 내용 비교
  • 단계별 해결 체크리스트

병합 후 정리

자동 정리 작업

  1. 브랜치 정리

    • 병합된 브랜치 삭제 옵션
    • 원격 브랜치 정리
  2. 히스토리 정리

    • 불필요한 stash 정리
    • 임시 파일 제거
  3. 상태 확인

    • 병합 결과 검증
    • 빌드 상태 확인

안전 기능

병합 취소 및 복구

/git:merge --abort    # 진행 중인 병합 중단
/git:merge --reset    # 병합 전 상태로 복구

백업 및 복구점

  • 병합 전 자동 stash 생성
  • 커밋 SHA 기반 복구점
  • 브랜치 상태 스냅샷

안전 검사

  • 중요 브랜치 보호 (main, develop)
  • 병합 권한 확인
  • 코드 리뷰 상태 점검

고급 기능

부분 병합

/git:merge --pick [커밋SHA]    # 특정 커밋만 선택적 병합
/git:merge --range [시작]..[끝] # 커밋 범위 지정 병합

병합 전략 옵션

-X ours          # 충돌 시 현재 브랜치 우선
-X theirs        # 충돌 시 병합할 브랜치 우선
-X patience      # 더 정확한 충돌 감지
-X ignore-space-change  # 공백 변경 무시

GitHub/PR 통합

  • PR 상태 기반 병합 제어
  • 리뷰 승인 상태 확인
  • CI/CD 파이프라인 연동

사용 예시

기본 병합

/git:merge feature/user-auth

병합 전략 지정

/git:merge --no-ff feature/user-auth    # No-fast-forward
/git:merge --squash feature/user-auth   # Squash merge

충돌 해결 모드

/git:merge --resolve    # 진행 중인 충돌 해결 계속

문제 해결

자주 발생하는 문제

  1. 병합 충돌이 복잡할 때

    • 단계별 해결 가이드 제공
    • 파일별 개별 해결
    • 전문가 모드 지원
  2. 병합 후 빌드 실패

    • 자동 빌드 테스트
    • 실패 시 롤백 옵션
    • 수정 후 재시도
  3. 히스토리가 복잡할 때

    • 병합 시각화 도구
    • 브랜치 관계 다이어그램
    • 커밋 히스토리 분석

이 커맨드는 Git 병합의 모든 복잡성을 처리하면서도 안전하고 직관적인 인터페이스를 제공합니다.