Code 입문

Claude Code로 Git 작업을 AI와 함께하는 법 — 커밋부터 충돌 해결까지

seunghyeonlab 2026. 5. 24. 10:45

hero

Git은 개발자라면 매일 쓰지만, 솔직히 귀찮은 순간이 있다. 커밋 메시지를 뭐라 써야 할지 막막하거나, 브랜치가 어디서 갈라진 건지 헷갈리거나, 충돌 마커가 가득 찬 파일 앞에서 멍해질 때. Claude Code는 이 모든 Git 작업에 직접 개입해 시간을 아껴준다. 이 글은 Git에 익숙하지만 반복 작업이 피곤한 개발자를 위한 실전 가이드다.


1. 왜 지금 이걸 봐야 하나

Git 자체를 모르는 사람은 없다. 문제는 "잘 쓰는 것"이 생각보다 피곤하다는 점이다.

커밋 메시지 하나 제대로 쓰려면 git diff --staged를 열고, 변경 내용을 직접 읽고, 의미 있는 문장으로 요약해야 한다. 브랜치 전략은 혼자 작업하면 그냥 test123 같은 이름이 쌓인다. 충돌이 나면 양쪽 코드를 직접 읽고 어느 쪽 의도가 맞는지 판단해야 한다.

Claude Code는 이 판단 과정에 들어온다. 단순 명령어 실행 도구가 아니라, 변경 내용을 읽고 의도를 추론해 함께 결정을 내리는 방식이다.


2. 핵심 아이디어

Claude Code는 Git 명령어를 직접 실행하면서 변경 내용을 이해한다.

별도 플러그인이 없어도 된다. 프로젝트 디렉토리에서 Claude Code를 열면, 현재 브랜치 상태·스테이징 여부·커밋 히스토리를 한 번에 파악하고 작업을 시작한다. 실행 가능한 Git 작업 범위는 아래와 같다.

작업 명령어
현재 상태 파악 git status, git diff
스테이징·커밋 git add, git commit
히스토리 조회 git log, git show
브랜치 관리 git branch, git checkout
병합·재배치 git merge, git rebase
임시 저장 git stash

핵심은 명령어 실행이 아니라 결과 해석이다. git diff 출력을 읽고 "왜 바뀌었는지"까지 추론해서 커밋 메시지를 만들고, 충돌 마커를 보고 양쪽 의도를 분석해 병합 코드를 제안한다.


3. 바로 따라하는 방법

커밋 메시지 자동 생성

코드 수정 후 이렇게 요청한다.

변경 사항 보고 커밋 메시지 만들어줘

Claude Code는 내부적으로 아래를 실행하고 결과를 분석한다.

git diff --staged

단순히 파일 이름을 나열하는 게 아니라, 변경 내용을 읽고 Conventional Commits 스타일로 뽑아준다. 로그인 유효성 검사 로직을 수정한 경우 예시:

fix: 이메일 형식 검증 정규식 수정

- 특수문자 포함 이메일 주소 처리 오류 수정
- RFC 5322 표준에 맞게 정규식 패턴 업데이트

메시지를 확인하고 승인하면 커밋까지 완료된다.

브랜치 전략 설계

기능 개발 시작 전에 이렇게 물어본다.

로그인 기능 새로 만드는 중인데 브랜치 어떻게 나눠야 해?

작업 규모에 맞는 분기 구조를 제안한다.

main
└── develop
    ├── feature/login-ui
    ├── feature/login-api
    └── feature/login-validation

각 브랜치 역할과 머지 순서까지 설명해주기 때문에, 중간에 방향을 잃지 않는다.

충돌 해결

git merge 또는 git rebase 중 충돌이 발생하면, 충돌 마커가 그대로 담긴 파일을 보여주고 물어본다.

이 충돌 어떻게 해결해야 해? 두 브랜치 의도 설명해줘

충돌 상황 예시:

<<<<<<< HEAD
def calculate_price(items):
    return sum(item.price for item in items)
=======
def calculate_price(items, discount=0):
    total = sum(item.price for item in items)
    return total * (1 - discount)
>>>>>>> feature/discount

Claude Code는 HEAD 버전은 기본 합계 계산, feature/discount는 할인율 적용 기능 추가임을 분석하고 두 의도를 합친 코드를 제안한다.

def calculate_price(items, discount=0):
    return sum(item.price for item in items) * (1 - discount)

단순 코드 복사가 아니라 로직을 이해한 병합이다.

히스토리 분석

팀 리뷰나 스프린트 정리 전에 유용하다.

최근 2주 커밋 보고 어떤 기능 개발 중인지 요약해줘

내부적으로 git log --since="2 weeks ago" --oneline 결과를 읽고, 프로젝트가 어떤 방향으로 진행됐는지 정리해준다.


4. 운영할 때 조심할 점

파괴적인 명령어는 기본적으로 실행 전 확인을 요청한다. git reset --hard, git push --force, git branch -D 같은 명령어는 "정말 실행할까요?" 하고 물어온다. 실수로 작업을 날리는 상황을 막아주는 안전장치다.

만약 Claude Code가 커밋까지 자동으로 해버리는 게 부담스럽다면, 허용 범위를 직접 설정할 수 있다.

// .claude/settings.json
{
  "permissions": {
    "allow": ["git status", "git diff", "git log"],
    "deny": ["git push", "git reset"]
  }
}

이렇게 설정하면 읽기 전용 Git 명령어만 Claude Code가 실행하고, 실제 반영 작업은 직접 손으로 하는 방식으로 운영할 수 있다. 팀 프로젝트처럼 실수 비용이 큰 환경에서는 이 방식이 더 안전하다.

한 가지 더. Claude Code가 제안하는 커밋 메시지는 변경 내용 기반 추론이라 맥락이 부족하면 표면적인 설명에 그칠 수 있다. "왜" 바꿨는지를 짧게 보충해주면 훨씬 정확한 메시지가 나온다.


마무리

Claude Code와 함께 쓰면, Git은 더 이상 귀찮은 관리 작업이 아니라 코딩 흐름의 일부가 된다. 커밋 메시지 고민, 충돌 해석, 브랜치 설계 — 이 반복 판단들을 AI에게 위임하고 실제 코드에 집중할 수 있다.

다음 글에서는 Claude Code의 멀티파일 편집과 대규모 리팩토링 작업 흐름을 다룬다.


🐦 X에서 더 빠르게: @baegseungh7061
📚 이 시리즈 더 보기: Code 입문
💌 새 글 알림: X 팔로우 또는 블로그 RSS 구독