CommitAi: AI를 활용한 Git 커밋 메시지 자동 생성 도구
요약
CommitAi는 OpenAI, Anthropic, Google 등 다양한 AI 모델을 활용하여 Git 커밋 메시지를 자동으로 생성하는 도구입니다. 스테이징된 변경 사항(diff)을 분석하고 Conventional Commits 표준에 맞춰 명확한 메시지를 작성함으로써 개발 워크플로우를 간소화합니다. pre-commit hook 통합 및 사용자 정의 프롬프트 기능도 제공합니다.
핵심 포인트
- AI 모델 기반으로 Git 커밋 메시지 자동 생성
- Conventional Commits 표준 준수 및 형식화 지원
- OpenAI, Anthropic 등 다중 AI 공급자 지원
- pre-commit hook과 연동하여 코드 품질 보장
Git 커밋 메시지를 작성하는 데 지치셨나요? AI에게 힘든 작업을 맡기세요!
CommitAi는 강력한 AI 모델(OpenAI의 GPT, Anthropic의 Claude, Google의 Gemini)을 활용하여 스테이징된 변경 사항을 기반으로 명확하고 간결하며 Conventional Commit 메시지를 자동으로 생성함으로써 Git 워크플로우를 간소화합니다.
파일을 스테이징하고 commitai를 실행하기만 하면 됩니다.
이는 diff를 분석하고, 선택적으로 사용자의 높은 수준의 설명을 받아들여 Conventional Commits 표준을 준수하는 커밋 메시지를 작성해 줍니다. 기본 Git 편집기에서 메시지를 검토하고, 필요한 수정 사항을 적용한 후 저장하면 끝입니다!
-
🧠 지능형 커밋 생성: 최첨단 AI 모델(Gemini, GPT, Claude)을 사용하여 스테이징된 코드 차이점(
git diff --staged)을 분석하여 의미 있는 커밋 메시지를 만듭니다. - 📄 Conventional Commits: Conventional Commits 명세에 따라 메시지를 자동으로 형식화합니다 (예:feat(auth): add JWT authentication). 이는 가독성을 높이고 자동 변경 로그 생성을 가능하게 합니다. - 📝 선택적 설명 제공: AI를 안내하기 위해 변경 사항에 대한 높은 수준의 설명을 입력으로 제공하거나, 코드 diff만으로 컨텍스트를 추론하도록 할 수 있습니다. - ✅ Pre-commit Hook 통합: 메시지 생성 전에 기존 네이티브 Git pre-commit hook (.git/hooks/pre-commit)을 자동으로 실행하여 코드 품질 및 스타일 검사가 통과되도록 보장합니다. - 🔧 템플릿을 통한 사용자 정의 프롬프트: 전역 환경 변수 또는 리포지토리별 템플릿 파일을 사용하여 AI 프롬프트에 사용자 지정 지침이나 컨텍스트를 추가할 수 있습니다. - 🤖 다중 AI 제공업체 지원: OpenAI, Anthropic, Google 또는 Ollama를 사용한 로컬 AI 모델에서 선호하는 AI 모델을 선택할 수 있습니다. - ⚙️ 유연한 워크플로우: -
모든 변경 사항 자동 스테이징 (
-a플래그). -
기본 Git 편집기에서 메시지 검토 (기본 동작).
-
편집기 검토 없이 직접 커밋 (
-c플래그). -
✨ 현대적인 도구링:
pyproject.toml로 구축되었으며,ruff로 포맷팅/린트됩니다.
(데모는 명시적인 설명 없이 Claude 3 Opus를 사용하여 커밋 메시지를 생성하는 것을 보여줍니다)
요구 사항: Python 3.10 이상 (macOS/Linux).
전역적으로 또는 가상 환경에 설치합니다:
pip install commitai
바이너리가 PATH에 있는지 확인하십시오. 다음 명령어로 검증할 수 있습니다:
commitai --version
# 출력되어야 할 내용: 3.1.0
개발하거나 로컬 변경 사항을 테스트하는 경우 (macOS/Linux 전용):
# 저장소를 클론합니다
git clone https://github.com/lguibr/commitai.git
cd commitai
...
중요 사항
commitai를 설치한 활성(ACTIVE) Python 환경에서 실행해야 합니다.
시스템 수준의 pip 바이너리는 충돌할 수 있습니다. which commitai를 사용하여 올바른 shim/바이너리를 사용하고 있는지 확인하십시오.
CommitAi는 사용할 AI 제공업체에 대한 API 키가 필요합니다. 이를 환경 변수로 설정하십시오:
-
OpenAI (GPT 모델):
export OPENAI_API_KEY="your_openai_api_key_here" -
Anthropic (Claude 모델):
export ANTHROPIC_API_KEY="your_anthropic_api_key_here" -
**Google (Gemini 모델):**다음 중 하나를 설정합니다 (CommitAi는 이 우선순위 순서로 확인합니다):
GOOGLE_API_KEY
(권장)GEMINI_API_KEY
GOOGLE_GENERATIVE_AI_API_KEY
예시:
export GOOGLE_API_KEY="your_google_api_key_here"
선택한 모델(또는 기본값인 Google의 Gemini Flash Latest)에 해당하는 제공업체의 키만 설정하면 됩니다.
CommitAi는 Ollama 모델과도 작동할 수 있습니다:
export OLLAMA_HOST="your_ollama_base_url"
AI가 사용하는 기본 시스템 프롬프트에 사용자 지정 지침을 추가할 수 있습니다. 이는 프로젝트별 가이드라인(예: 티켓 번호 언급)을 강제하는 데 유용합니다.
-
전역 템플릿: 환경 변수를 설정합니다. 이는 로컬에서 재정의되지 않는 한 모든 저장소에 적용됩니다.# 예시: AI에게 항상 JIRA 참조 형식을 포함하도록 요청합니다 export TEMPLATE_COMMIT="Ensure the commit footer includes a JIRA reference like 'Refs: PROJECT-123'."`
-
저장소별 템플릿:
commitai-create-template를 사용하십시오.
저장소 내에서 명령을 실행합니다. 이렇게 하면 .git/commit_template.txt 파일이 생성되고 이 저장소에 한해서만 전역 변수 TEMPLATE_COMMIT이 덮어쓰여집니다.# 예시: AI에게 특정 저장소 커밋의 UI 변경 사항에 초점을 맞추도록 지시하기 commitai-create-template "커밋 메시지 본문은 사용자 인터페이스(UI) 변경 사항에 중점을 두세요."
참고: 이 템플릿들은 이미 Conventional Commits 형식을 따르도록 AI에게 지시하는 기본 시스템 프롬프트에 추가됩니다. 사용자가 보충적인 지침을 제공하는 것입니다.
**코드 변경 사항 적용.**커밋에 포함할 변경 사항을 스테이징합니다: git add <file1> <file2> ... # 또는 추적된 모든 파일의 변경 사항 스테이징하기 git add . # 또는 추적되지 않은 파일을 포함하여 모든 변경 사항 스테이징하기 git add --all
실행commitai
:
옵션 1: CommitAi가 diff에서 메시지를 추론하도록 허용 commitai # 옵션 2: AI를 안내할 고수준 설명 제공 commitai "JWT 토큰을 사용하도록 사용자 인증 리팩토링"
**검토 및 편집:**CommitAi는 pre-commit hook을 실행하고, 메시지를 생성하며, 기본 Git 에디터(예: Vim, Nano, VS Code)에서 이를 엽니다. 메시지를 검토하고 필요한 모든 편집을 수행합니다.**저장 및 닫기:**파일을 저장하고 에디터를 닫습니다. 그러면 CommitAi가 최종 메시지로 커밋을 생성할 것입니다. 저장하지 않거나 메시지를 지우고 닫으면, 커밋은 중단됩니다.
commitai 명령어(이는 commitai generate의 별칭임)는 다음 옵션을 받습니다:
-
-a,--add: -
스테이징되지 않은 모든 변경 사항(
git add --all)을 자동으로 스테이징한 후 커밋 메시지를 생성합니다. - 작업 디렉터리의 모든 것을 빠르게 커밋하는 데 유용합니다. -
예시:
commitai -a "사용자 프로필 페이지 구현" -
-c,--commit: -
검토를 위해 Git 에디터를 여는 과정을 건너뜁니다. 생성된 메시지가 직접 커밋을 만드는 데 사용됩니다. 주의해서 사용하세요! AI가 생성한 메시지를 검토하는 것이 좋습니다.- 예시:
commitai -c "문서의 오타 수정"
(사소한 변경 사항에 한함) --a와 결합할 수 있습니다.
:`commitai -a -c "Quick fix and commit all""
--review
/--no-review
:- 커밋 메시지 생성 전에 스테이징된 diff에 대한 예비 AI 검토를 토글합니다. 기본값은 --review (활성화)입니다.
- 활성화되면 CommitAi가 간략한 검토 내용을 출력하고 진행할지 묻습니다.
- 예를 들어, 리뷰 단계를 건너뛰려면
commitai --no-review를 사용합니다.
:- 커밋 메시지 생성 전에 스테이징된 diff에 대한 예비 AI 검토를 토글합니다. 기본값은 -
-m <model_name>,
--model <model_name>
:- 사용할 AI 모델을 지정합니다.
- 사용할 AI 모델을 지정합니다.
- 기본값은
gemini-flash-latest입니다. - 해당하는 API 키 환경 변수가 설정되었는지 확인하십시오. - 예시:
commitai -m gemini-pro-latest "Use Google's Gemini Pro Latest"
commitai -m gpt-4 "Use OpenAI's GPT-4"
commitai -m claude-3-opus "Use Anthropic's Claude 3 Opus"
The commitai-create-template
명령어는 저장소별 템플릿 지침을 설정합니다.
`commitai-create-template "Add a 'Co-authored-by:' line if applicable."``
이는 현재 저장소의 .git/commit_template.txt 파일을 생성/덮어씁니다.
1. 간단한 커밋, 추론된 메시지:
# 변경 사항 스테이징
git add src/utils.py tests/test_utils.py
# commitai 실행 - AI가 diff에서 메시지를 추론합니다
...
(에디터가 feat(utils): 데이터 유효성 검사를 위한 헬퍼 함수 추가와 같은 메시지와 함께 열립니다)
2. 설명과 함께 커밋:
# 변경 사항 스테이징
git add src/auth.py
# 설명과 함께 commitai 실행
...
(에디터가 feat(auth): 이메일 토큰을 통한 비밀번호 재설정 구현과 같은 메시지와 함께 열립니다)
3. 모든 것을 스테이징하고 직접 커밋 (에디터 없음):
# 모든 변경 사항을 스테이징하고 GPT-4를 사용하여 즉시 커밋합니다
commitai -a -c -m gpt-4 "Minor refactoring and cleanup"
(커밋이 직접 생성됩니다)
4. 템플릿 사용:
-
먼저, 템플릿을 설정합니다:
`commitai-create-template "Mention the related issue number from GitHub, e.g., Fixes #123."`` -
그런 다음, commitai를 실행합니다:
git add src/parser.py commitai "Fix bug in CSV parsing logic"
*(에디터가 fix(parser): 따옴표로 묶인 쉼표 처리 수정과 같은 메시지로 열릴 수 있습니다.
#123 해결)*
기여는 매우 환영합니다! 다음 단계를 따라주세요:
-
GitHub에서 저장소를 포크(Fork)하세요.
-
로컬에 포크를 클론(Clone)하세요:
git clone <your-fork-url> -
프로젝트 디렉터리로 이동하세요:
cd commitai -
가상 환경을 만드세요:
python -m venv .venv && source .venv/bin/activate
(또는 Windows에서는 .\.venv\Scripts\activate)
- 종속성(dependencies)을 설치하고, 개발 도구도 포함하세요:
pip install -e ".[test]"
(선택 사항이지만 권장) pre-commit 훅(hooks)을 설정하세요:pre-commit install
-
기능 또는 버그 수정에 대한 새 브랜치를 만드세요:
git checkout -b my-feature-branch -
변경사항을 만드세요.
-
커밋하기 전에 로컬에서 검사를 실행하세요:
-
코드 형식 지정(Format):
ruff format . -
코드 린팅(Lint):
ruff check . -
타입 검사(Type checks)를 실행하세요:
mypy commitai tests -
테스트를 실행하세요:
pytest -
코드 형식 지정(Format):
-
변경사항을 커밋하세요 (다음 명령어를 사용할 수 있습니다:
commitai
!). - 브랜치를 포크로 푸시하세요:
git push origin my-feature-branch -
메인
lguibr/commitai저장소에 풀 리퀘스트(Pull request)를 여세요.
CI 파이프라인은 여러분의 풀 리퀘스트에서 모든 검사를 자동으로 실행할 것입니다.
CommitAi는 MIT 라이선스 하에 배포되는 오픈 소스 소프트웨어입니다. 자세한 내용은 LICENSE 파일을 참조하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기