# GAC(Git Auto Commit): LLM 기반 자동 커밋 메시지 생성 도구

**URL:** https://discuss.pytorch.kr/t/gac-git-auto-commit-llm/8171
**Category:** 읽을거리&정보공유
**Tags:** cli-tools, gac, git-auto-commit, commit-message
**Created:** [11월 11, 2025, 9:30오전 UTC](https://discuss.pytorch.kr/t/gac-git-auto-commit-llm/8171 "2025-11-11T09:30:51Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![9bow](https://discuss.pytorch.kr/user_avatar/discuss.pytorch.kr/9bow/32/16301_2.png) [@9bow](https://discuss.pytorch.kr/u/9bow)
#### Post date: [11월 11, 2025, 9:30오전 UTC](https://discuss.pytorch.kr/t/gac-git-auto-commit-llm/8171/1 "2025-11-11T09:30:51Z")

</div>

![image](https://discuss.pytorch.kr/uploads/default/original/2X/d/def5d0b782e336efe3883f46366780e6841bd25e.png)

## gac 소개

**gac** (Git Auto Commit)은 개발자가 `git commit -m "..."`을 직접 작성하지 않아도, 코드 변경 사항의 의도를 이해하고 자연스러운 커밋 메시지를 대규모 언어 모델(LLM)을 통해 자동으로 생성해주는 오픈소스 도구입니다. gac는 Python 기반으로 만들어졌으며, OpenAI, Anthropic, Gemini, Claude, Mistral 등 다양한 AI 제공자를 지원합니다.

이 도구의 핵심은 단순히 변경된 파일 내용을 요약하는 것이 아니라, “왜 이 변경이 발생했는가(why)”를 이해하고 커밋 메시지를 의미 있게 구성하는 점입니다. 즉, gac은 단순한 자동화 툴이 아닌, **개발 의도를 분석하고 문맥적으로 커밋을 생성하는 지능형 커밋 도우미** 입니다.

 ![image](https://discuss.pytorch.kr/uploads/default/original/2X/5/58c68d9bdbd8950b854903d4b624d00bb8514c49.jpeg)

개발자는 gac 명령어 하나로 변경 사항을 스테이징하고(git add), 메시지를 생성하고(commit), 원격 저장소로 푸시(push)까지 한 번에 수행할 수 있습니다. 특히 다국어 지원과 보안 검증, 커밋 그룹화 기능까지 포함되어 있어, 협업 환경에서 품질 높은 커밋 메시지를 유지하기에 적합합니다.

일반적인 Git 워크플로우에서 개발자는 직접 커밋 메시지를 작성해야 합니다. 그러나 이 과정은 다음과 같은 문제점을 동반합니다:

1. 커밋 메시지의 품질이 개발자마다 들쑥날쑥합니다.
2. 반복적이고 시간 낭비적인 작업입니다.
3. 코드 변경의 “의도(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와 조합하면 완전 자동화된 배포 파이프라인 구성 가능. |

### 기본 워크플로우

```auto
# 변경 사항을 스테이지(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를 설정할 수 있습니다:

```auto
GAC_MODEL=openai:gpt-4o
OPENAI_API_KEY=your_key_here
ANTHROPIC_API_KEY=your_key_here

```

그 외 설정 가능한 환경 변수는 [GitHub 저장소의 환경 변수 예시 파일(`.gac.env.example`)](https://github.com/cellwebb/gac/blob/main/.gac.env.example)에서 확인할 수 있으며, [GitHub 저장소의 docs/CUSTOM\_SYSTEM\_PROMPTS.md](https://github.com/cellwebb/gac/blob/main/docs/en/CUSTOM_SYSTEM_PROMPTS.md)에서 커밋 메시지 작성을 위한 시스템 프롬프트 변경 가이드를 확인할 수 있습니다.

## 라이선스

gac 프로젝트는 [MIT 라이선스](https://github.com/cellwebb/gac/blob/main/LICENSE)로 배포되며, 상업적 사용과 수정 및 재배포가 자유롭게 허용됩니다.

## :github: gac(git auto commit) 프로젝트 GitHub 저장소

[https://github.com/cellwebb/gac](https://github.com/cellwebb/gac)

## 더 읽어보기

- [Oh My Commit: AI 기반의 Git Commit 메시지 생성 도구](https://discuss.pytorch.kr/t/oh-my-commit-ai-git-commit/5768)

* * *

_이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다._ 🤗

[:pytorch:파이토치 한국 사용자 모임🇰🇷](https://pytorch.kr/)이 정리한 이 글이 유용하셨나요? [회원으로 가입](https://discuss.pytorch.kr/signup)하시면 주요 글들을 이메일💌로 보내드립니다! (기본은 Weekly지만 [Daily로 변경도 가능](https://discuss.pytorch.kr/my/preferences/emails)합니다.)

🎁 아래↘쪽에 좋아요👍를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ 🤩

---

<div class="post-metadata">

### Author: ![belovian](https://discuss.pytorch.kr/user_avatar/discuss.pytorch.kr/belovian/32/7337_2.png) [@belovian](https://discuss.pytorch.kr/u/belovian)
#### Post date: [11월 13, 2025, 8:56오전 UTC](https://discuss.pytorch.kr/t/gac-git-auto-commit-llm/8171/2 "2025-11-13T08:56:25Z")

</div>

qwen3-coder 30b랑 연동해서 써보고 있는데, 매우 쓸만합니다.

---

<div class="post-metadata">

### Author: ![belovian](https://discuss.pytorch.kr/user_avatar/discuss.pytorch.kr/belovian/32/7337_2.png) [@belovian](https://discuss.pytorch.kr/u/belovian)
#### Post date: [12월 19, 2025, 8:16오전 UTC](https://discuss.pytorch.kr/t/gac-git-auto-commit-llm/8171/3 "2025-12-19T08:16:35Z")

</div>

사내에 도입해서 사용중인데, 매우 만족스럽습니다.  
개발자들이 commit message 생성에 시간을 꽤 사용하는데, 명령어 한번 탁 치면, 대체적으로 2초 이내에 메시지가 만들어집니다.  
원한다면 prompt 도 교체 가능하니, 조금 쌩쌩한 CPU가 있거나 작은 GPU라도 있는 곳에서는 안심하고 로컬모델로 사용 할 수 있습니다.

---

<div class="post-metadata">

### Author: ![9bow](https://discuss.pytorch.kr/user_avatar/discuss.pytorch.kr/9bow/32/16301_2.png) [@9bow](https://discuss.pytorch.kr/u/9bow)
#### Post date: [12월 26, 2025, 6:53오전 UTC](https://discuss.pytorch.kr/t/gac-git-auto-commit-llm/8171/4 "2025-12-26T06:53:18Z")

</div>

우와, 덧글에 후기까지 남겨주시다니!! 감사합니다! 🙇
