gac 소개
gac(Git Auto Commit)은 개발자가 git commit -m "..."을 직접 작성하지 않아도, 코드 변경 사항의 의도를 이해하고 자연스러운 커밋 메시지를 대규모 언어 모델(LLM)을 통해 자동으로 생성해주는 오픈소스 도구입니다. gac는 Python 기반으로 만들어졌으며, OpenAI, Anthropic, Gemini, Claude, Mistral 등 다양한 AI 제공자를 지원합니다.
이 도구의 핵심은 단순히 변경된 파일 내용을 요약하는 것이 아니라, “왜 이 변경이 발생했는가(why)”를 이해하고 커밋 메시지를 의미 있게 구성하는 점입니다. 즉, gac은 단순한 자동화 툴이 아닌, 개발 의도를 분석하고 문맥적으로 커밋을 생성하는 지능형 커밋 도우미입니다.
개발자는 gac 명령어 하나로 변경 사항을 스테이징하고(git add), 메시지를 생성하고(commit), 원격 저장소로 푸시(push)까지 한 번에 수행할 수 있습니다. 특히 다국어 지원과 보안 검증, 커밋 그룹화 기능까지 포함되어 있어, 협업 환경에서 품질 높은 커밋 메시지를 유지하기에 적합합니다.
일반적인 Git 워크플로우에서 개발자는 직접 커밋 메시지를 작성해야 합니다. 그러나 이 과정은 다음과 같은 문제점을 동반합니다:
- 커밋 메시지의 품질이 개발자마다 들쑥날쑥합니다.
- 반복적이고 시간 낭비적인 작업입니다.
- 코드 변경의 “의도(intent)”를 충분히 설명하지 못합니다.
gac은 이러한 문제를 해결하기 위해 LLM 기반의 의미적 분석을 적용합니다. 단순한 diff 텍스트가 아니라, 변경된 코드의 구조, 함수 역할, 리팩토링 여부, 버그 수정 등을 분석해 커밋의 목적을 이해합니다.
이 과정에서 gac은 Conventional Commit 형식을 준수하며, 명확한 요약과 세부 설명을 함께 제공해 코드 리뷰와 변경 추적의 품질을 높입니다.
gac의 주요 기능
-
다양한 LLM 서비스 제공자 지원: OpenAI, Anthropic, Mistral, Gemini, Claude, Fireworks 등 20여 개의 LLM 플랫폼을 지원하며, Custom Endpoint를 통해 자체 호스팅된 API 연동 또한 가능합니다.
-
지능형 LLM 분석: 코드 변경 이유와 맥락을 파악하여 개발자의 의도를 이해하고, 변경 사항들을 기능 추가, 버그 수정, 리팩토링, 브레이킹 체인지 등으로 자동 분류합니다. 또한, 관련된 변경들을 묶어 다중 커밋(
--group)으로 생성할 수 있으며, 빌드 결과물이나 종속성 파일 등과 같은 의미없는 변경은 제외합니다. -
메시지 형식 다양화: 기본적으로 간결한 요약 및 핵심 변경 포인트를 중심으로 커밋 메시지를 작성합니다. 그 외에도
-o또는-v옵션을 통해 한 줄짜리 Conventional Commit 또는 동기, 접근 방식, 영향도 등을 상세하게 작성할 수 있습니다. -
다국어 지원: 한국어, 영어, 일본어, 중국어 등, 25개 이상의 언어로 커밋 메시지를 생성할 수 있으며,
gac language명령으로 기본 언어 설정이 가능합니다. -
개발자 경험: “make it shorter”와 같은 자연어 명령으로 커밋 메시지 수정이 가능하며, vi/emacs 모드로 편집 또한 가능합니다. 그 외에도
gac -ayp와 같은 옵션을 사용하여git add → git commit → git push를 한 번에 수행할 수 있습니다. -
내장 보안 시스템: 커밋 전 코드에 API 키나 비밀번호 등이 포함되었는지 자동으로 스캔하며, 그 외 민감한 데이터 포함 시 경고 및 대처 옵션을 제공합니다.
사용법 및 사용 예시
| 명령어 | 설명 |
|---|---|
gac |
기본 명령어. 현재 스테이징된 변경사항을 분석해 LLM을 통해 커밋 메시지를 생성합니다. 사용자는 메시지를 검토한 뒤 y로 승인하거나 r로 재생성할 수 있습니다. |
gac -y |
자동 승인 모드. 생성된 커밋 메시지를 검토하지 않고 바로 커밋합니다. 빠른 워크플로우(예: 단순 수정 시)에 적합합니다. |
gac -a |
자동 스테이징 옵션. git add . 단계를 생략하고, 변경된 파일을 자동으로 스테이징한 후 커밋 메시지를 생성합니다. |
gac -o |
한 줄 요약 모드. 단순 변경이나 경미한 수정에 대해 한 줄짜리 Conventional Commit 형식의 메시지를 생성합니다. (예: fix(ui): adjust button color) |
gac -v |
상세 분석 모드. 커밋 메시지에 동기(Motivation), 기술적 접근(Technical Approach), 영향도(Impact Analysis)를 포함해 자세한 설명을 제공합니다. PR 리뷰용으로 유용합니다. |
gac -h "hint" |
힌트 제공 옵션. LLM에 추가 문맥을 전달해 메시지 품질을 높입니다. 예: gac -h "bug fix" → “버그 수정”을 명시적으로 반영한 메시지 생성. |
gac -s |
스코프 추가 옵션. Conventional Commit 규칙에 따라 커밋 유형 뒤에 스코프를 포함합니다. 예: feat(auth): implement token refresh |
gac -p |
자동 푸시 옵션. 커밋 완료 후 원격 저장소로 즉시 푸시합니다. -a, -y와 조합하면 완전 자동화된 배포 파이프라인 구성 가능. |
기본 워크플로우
# 변경 사항을 스테이지(stage)합니다.
git add .
# 커밋 메시지를 생성하고 커밋합니다.
gac
# 생성된 커밋 메시지를 리뷰한 뒤, 다음 명령어로 이후 진행을 지시합니다:
# y → commi
# n → cancel
# r → reroll
# e → edit
# (또는, 피드백을 직접 입력할 수 있습니다.)
리뷰 없이 바로 커밋하려면 gac -y를 사용할 수 있습니다.
고급 예시
| 명령어 | 설명 |
|---|---|
gac -ayp -h "release preparation" |
전체 자동화 워크플로우.변경사항 자동 스테이징(-a), 자동 승인(-y), 커밋 후 자동 푸시(-p)까지 한 번에 수행합니다.힌트(-h)를 통해 LLM에게 “release preparation”이라는 문맥을 제공해, 릴리스 준비 작업임을 인식하게 합니다.예: chore(release): prepare v1.3.0 같은 메시지 자동 생성. |
gac -v -s |
상세 설명 + 스코프 포함 커밋.-v 옵션으로 커밋 메시지를 자세히 작성하며, -s로 기능 영역(scope)을 포함합니다.예: feat(auth): add token refresh mechanism와 함께, 내부적으로 “왜 추가했는지”와 “기술적 접근 방식”을 설명하는 본문 생성. |
gac -o |
간단한 수정용 한 줄 커밋.작은 코드 변경, 주석 수정, 문서 갱신 등에서 사용.예: docs: update README 또는 fix(ui): adjust padding 같은 concise 메시지 생성. |
gac -ag |
변경 사항을 의미 단위로 자동 그룹화.LLM이 코드의 의미적 연관성을 분석해, 하나의 커밋에 여러 파일이 포함될 경우 자동으로 “논리적으로 관련된 커밋”으로 분리합니다.예: “UI 개선”, “데이터베이스 마이그레이션” 등 주제별 커밋 생성. |
gac --show-prompt |
LLM 입력 디버깅 모드.모델이 실제로 어떤 프롬프트를 보고 커밋 메시지를 생성하는지 확인할 수 있습니다.디버깅이나 프롬프트 튜닝(Custom System Prompt 작성 시)에 유용합니다. |
| gac --skip-secret-scan | 보안 스캔 생략 (주의 필요).기본적으로 gac은 API 키, 비밀번호 등 민감 정보를 탐지하지만, 이 옵션을 사용하면 해당 검사를 건너뜁니다.CI/CD 자동화 환경에서 속도 향상을 위해 임시로 사용할 수 있으나, 실무에서는 신중히 사용해야 합니다. |
gac 설치 및 설정
uv tool install gac 명령어로 설치 후 gac init을 실행하여 초기 설정을 수행할 수 있습니다.
또한, 다음과 같은 환경 변수를 설정하여 기본 모델 및 API Key를 설정할 수 있습니다:
GAC_MODEL=openai:gpt-4o
OPENAI_API_KEY=your_key_here
ANTHROPIC_API_KEY=your_key_here
그 외 설정 가능한 환경 변수는 GitHub 저장소의 환경 변수 예시 파일(.gac.env.example)에서 확인할 수 있으며, GitHub 저장소의 docs/CUSTOM_SYSTEM_PROMPTS.md에서 커밋 메시지 작성을 위한 시스템 프롬프트 변경 가이드를 확인할 수 있습니다.
라이선스
gac 프로젝트는 MIT 라이선스로 배포되며, 상업적 사용과 수정 및 재배포가 자유롭게 허용됩니다.
gac(git auto commit) 프로젝트 GitHub 저장소
더 읽어보기
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

