Skip to main content

AI 시대의 Git: "빠르게 바꾸되, 언제든 되돌릴 수 있게"

Claude Code를 붙이면 코드 변경 속도가 크게 올라갑니다. 문제는 속도가 올라갈수록 실수도 더 빠르게 커진다는 점입니다. 그래서 이 챕터의 목표는 단순히 "Git을 잘 쓰자"가 아니라, Claude에게 Git 상태 확인·디프 분석·커밋 메시지 작성·충돌 해결까지 맡기되, 사람이 통제권을 유지하는 체크포인트를 설계하는 것입니다.

여기서 체크포인트는 거창한 프로세스가 아닙니다. 아주 짧은 리듬으로 반복되는 네 가지 동작입니다.

  • 브랜치로 격리한다.

  • 원자적 커밋으로 쪼갠다.

  • PR로 리뷰/테스트 게이트를 통과시킨다.

  • 문제 시 되돌릴 수 있도록 히스토리를 관리한다.

이 네 가지가 갖춰지면, Claude가 만들어낸 변경을 "안전하게" 흡수할 수 있습니다.

브랜치 전략: 단순하게 시작하고, 필요할 때만 복잡해진다

브랜치 전략은 팀의 개발 흐름을 규정합니다. 좋은 전략의 공통점은 하나입니다. 메인 브랜치는 항상 건강하고(빌드/테스트 통과), 모든 변경은 짧은 브랜치를 통해 PR로 들어온다는 원칙입니다.4

추천 기본값: GitHub Flow(대부분의 제품 개발)

웹/서비스 개발처럼 자주 배포하고, 운영 중인 버전이 사실상 하나라면 GitHub Flow가 가장 간결합니다. 규칙은 단순합니다. main은 항상 배포 가능 상태, 작업은 feature/* 같은 짧은 브랜치에서 하고 PR로 합칩니다.4

이때 Claude에게 맡길 일은 명확합니다.

  • "내 브랜치가 main에서 얼마나 벌어졌는지" 확인

  • "이번 PR이 너무 크지 않은지" 분할 제안

  • "리뷰어가 읽기 쉬운 순서로 커밋이 구성됐는지" 점검

Git Flow / Release 브랜치가 필요한 때

모바일 앱처럼 릴리스 주기가 길고, 운영 버전이 여러 갈래로 유지되는 조직이라면 릴리스 브랜치/핫픽스 브랜치가 도움이 됩니다.4 다만 브랜치가 늘어날수록 운영 비용도 늘어납니다. 처음부터 복잡한 모델을 도입하기보다, 릴리스가 "분기 단위로 안정화 기간을 꼭 가져야 하는지" 같은 요구가 명확해질 때 확장하는 편이 안전합니다.

브랜치 이름 규칙(Claude가 자동으로 맞추게 만들기)

브랜치 이름은 사람에게는 맥락이고, 자동화에는 트리거입니다.4 최소한 다음 패턴 정도는 통일해 두면 좋습니다.

  • feature/<short-desc>

  • bugfix/<issue-or-desc>

  • hotfix/<short-desc>

Claude에게는 "이 저장소의 브랜치 네이밍 규칙은 위와 같고, 새 브랜치를 만들 땐 항상 맞춰 달라"고 지침으로 고정해 두면(예: CLAUDE.md) 작은 마찰이 사라집니다.

원자적 커밋: Claude의 속도를 '되돌릴 수 있음'으로 바꾸는 기술

원자적 커밋(Atomic Commit)은 Git 안전운영의 핵심입니다. 한 커밋이 하나의 논리적 변경을 담고, 그 커밋만으로도 이해/테스트/되돌리기가 가능해야 합니다.123

원자적 커밋이 중요한 이유는 다음과 같습니다.

  • 버그가 생겼을 때 git bisect가 훨씬 정확해집니다.23

  • 특정 변경만 깨끗하게 revert하거나 cherry-pick하기 쉬워집니다.3

  • PR 리뷰가 "한 번에 한 가지"를 보게 되어 빨라집니다.3

Claude에게 '커밋 단위'를 먼저 설계시키기

코드를 바꾸기 전에 Claude에게 이렇게 시키는 편이 좋습니다.

"이 작업을 원자적 커밋 3~6개로 쪼개서 커밋 제목 초안을 먼저 제안해줘. 각 커밋마다 포함될 파일 범위와 테스트 방법도 적어줘."

이렇게 하면 Claude가 변경을 내리기 전에 스스로 범위를 제약하게 됩니다. 속도를 제어하는 가장 간단한 브레이크입니다.

스테이징을 '선별'로 바꾸기: git add -p

원자적 커밋을 현실에서 가능하게 만드는 장치는 스테이징 영역입니다. 파일 전체가 아니라 변경 조각(hunk)을 골라 담을 수 있어야 합니다.13

Claude에게는 다음을 맡기면 좋습니다.

  • git diff를 보고 "이번 커밋에 들어가면 안 되는 변경"을 표시

  • git add -p로 어떤 조각을 먼저 스테이징할지 순서 제안

  • "이 조각은 리팩터링이므로 기능 커밋과 분리" 같은 분류

사람이 할 일은 단 하나입니다. 최종 스테이징 결과를 눈으로 확인하고 OK를 주는 것입니다.

"반쯤 완성"은 커밋이 아니라 stash

커밋은 논리적으로 끝난 단위여야 합니다. 작업 중간에 워킹 트리를 비워야 한다면 커밋 대신 git stash가 맞습니다.5

Claude에게도 원칙을 분명히 해두세요.

"빌드/테스트를 통과하지 못하는 상태는 커밋하지 말고, 필요하면 stash로 빼."5

커밋 메시지: 나중의 나와 동료를 위한 인터페이스

커밋 메시지는 히스토리를 '검색 가능한 문서'로 바꿉니다. 특히 원자적 커밋과 결합되면, 나중에 되돌리기/체리픽/릴리즈 노트 자동화 같은 작업이 쉬워집니다.1

Conventional Commits를 팀 표준으로 고려하기

규칙을 도입한다면 Conventional Commits 형식(type(scope): subject)이 가장 널리 쓰입니다.1

예시는 다음처럼 단순합니다.

  • feat(auth): add device-based risk check

  • fix(api): handle empty cursor token

  • test(search): add regression for ranking bug

Claude에게 맡기기 좋은 부분은 "요약 1줄 + 왜(why) 중심의 본문" 작성입니다. 특히 PR에서 논쟁이 생길 만한 변경은 커밋 본문에 의도를 남기게 하면, 리뷰 비용이 확 내려갑니다.1

커밋 메시지 템플릿(복붙용)

다음 템플릿을 쓰면 Claude가 자동으로 채우기 좋습니다.

  • 제목: type(scope): 한 문장으로 무엇을 바꿨나

  • 본문(선택): 왜 이 변경이 필요한가, 어떤 대안이 있었나

  • 검증: 어떤 테스트/명령으로 확인했나

PR 준비: '합치기 전 마지막 안전장치'를 자동화하기

PR은 협업의 핵심이자, AI가 만든 변경을 팀의 자산으로 바꾸는 관문입니다. 메인 브랜치에 직접 푸시하지 않고 PR을 강제하는 이유는 코드 품질과 안전을 함께 얻기 위해서입니다.4

PR을 작게 유지하기: "리뷰는 사람이 하고, 분할은 Claude가 한다"

PR이 커지면 Claude는 빨라져도 사람은 느려집니다. 그래서 PR은 작아야 합니다. Claude에게는 다음을 시키세요.

"현재 diff를 보고 PR을 2~3개로 나눌 수 있으면 나눠줘. 의존성이 있으면 순서를 제시해줘."

이는 원자적 커밋과도 연결됩니다. 커밋이 원자적이면 PR도 작아지기 쉽습니다.3

PR 설명(Description)은 '왜'와 '검증'을 먼저 쓴다

PR 본문은 리뷰어의 시간을 단축시키는 문서입니다. Microsoft의 브랜칭 가이드는 PR 설명에 충분한 정보를 제공하고, PR 머지 전에 빌드/검증이 수행되도록 정책을 두라고 권합니다.4

실무적으로는 아래 구조가 가장 무난합니다.

  • 요약: 무엇을 바꿨나

  • 배경: 왜 바꿨나

  • 변경점: 핵심만

  • 검증: 테스트/스크린샷/재현 절차

  • 영향 범위: API 변경, 마이그레이션 필요 여부

Claude에게는 "PR 템플릿에 맞춰 초안을 쓰고, diff를 근거로 검증 항목을 채워"라고 맡기면 됩니다.

머지 직전 체크포인트: 최신 main 반영 + CI 통과

PR이 오래 열려 있으면 충돌 가능성이 높아집니다. 짧은 브랜치, 자주 동기화가 기본입니다.4

Claude가 할 일:

  • main 최신 반영 방식 제안(팀 규칙에 따라 merge/rebase)

  • 충돌 가능 파일을 미리 경고

  • CI 실패 로그를 읽고 수정 방향 제안

사람이 할 일:

  • 리베이스/머지 방식이 팀 규칙과 맞는지 최종 확인

  • 위험 변경(권한, 결제, 인증)은 직접 검토

충돌 해결: Claude에게 맡기되, "설명 가능한 해답만" 채택하기

충돌은 텍스트의 싸움이 아니라 의도의 충돌입니다. AI는 이 의도 추정을 빠르게 해주지만, 무조건 믿으면 안 됩니다.6

AI가 잘하는 것과 못하는 것

AI는 충돌 블록의 의미 차이를 요약하고, 둘 다 살릴 수 있는 형태로 재구성하는 데 강합니다.6 하지만 다음 범주는 조심해야 합니다.

  • 락 파일(package-lock.json 등), 바이너리

  • DB 마이그레이션 순서

  • 보안 민감 코드(인증/암호/권한)

이런 경우는 AI가 제안하더라도 사람이 설계 결정을 내려야 합니다.6

Claude에게 주는 충돌 프롬프트(실전형)

충돌을 붙여 넣을 때는 "누가 이겼으면 하는가"가 아니라 "무엇을 보존해야 하는가"를 명시합니다.

"다음은 merge conflict다. HEAD는 성능을 위해 reduce로 리팩터링했고, incoming은 할인 파라미터를 추가했다. 제약: 기존 호출은 인자를 안 넘긴다(기본값 필요). 둘의 의도를 모두 보존하는 해답으로 정리하고, 왜 그렇게 합쳤는지 설명해줘."6

가능하면 3-way 관점(merge base 포함)을 주면 더 정확해집니다. 충돌은 '내 것 vs 상대 것'이 아니라 '공통 조상 대비 변화'이기 때문입니다.7

VS Code의 3-way Merge Editor를 "결과 검증 창"으로 쓰기

도구가 무엇이든, 마지막 확인은 시각적으로 하는 편이 안전합니다. VS Code는 충돌 파일을 3-way merge editor로 열어 현재/유입/결과를 한 화면에서 비교할 수 있고, AI 기반 해결도 실험 기능으로 제공됩니다.8

Claude의 제안을 그대로 반영하기 전에, 최소한 결과 패널을 보고 다음을 확인하세요.

  • 충돌 마커가 완전히 제거됐는가

  • 함수 시그니처 변경이 호출부와 일치하는가

  • 테스트가 실패할 만한 논리 손실이 없는가

되돌리기 플레이북: "망했을 때의 절차"를 미리 정해두기

AI가 빠를수록, "실패했을 때의 루트"도 빨라져야 합니다. 아래는 팀/개인 모두에 통하는 최소 플레이북입니다.

  • 커밋이 원자적이면: 문제 커밋만 git revert로 되돌린다.3

  • 릴리즈 브랜치가 있으면: 수정은 원칙적으로 메인에 먼저 반영하고 필요한 것만 체리픽한다.4

  • PR 단위가 작으면: 문제가 된 PR만 롤백하거나 후속 PR로 수정한다.

Claude에게는 "지금 상황에서 가장 안전한 복구 경로가 무엇인지(리버트/체리픽/핫픽스 브랜치)"를 선택지로 정리하게 하고, 사람은 정책 결정을 내리는 역할을 맡으면 됩니다.

마무리: Git은 Claude의 '안전벨트'다

Claude Code는 코드를 빨리 만들지만, 제품을 안전하게 만드는 것은 체크포인트입니다. 브랜치로 격리하고, 원자적 커밋으로 쪼개고, PR로 게이트를 세우고, 충돌은 설명 가능한 수준에서만 AI를 채택하세요. 이 루틴이 자리 잡으면, Claude의 속도는 곧바로 팀의 생산성으로 전환됩니다.

참고

1Git Commit Best Practices: 7 Proven Tips

2A Developer's Guide to Atomic Git Commits - Medium

3The Power of Atomic Commits in Git: How and Why to Do It

4Adopt a Git branching strategy (Microsoft Learn)

5Git Tips and Git Commit Best Practices · GitHub Gist

6Resolving Merge Conflicts with AI

7Git Merge Conflict Resolution AI Prompts for Developers

8Resolve merge conflicts in VS Code

책 목록

Claude Code 실전 활용법: 설치부터 자동화·MCP·운영까지

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기