Hugging Face의 무료 AI 모델과 OpenAI API를 사용하여 Git 커밋 메시지를 자동으로 생성하고 커밋하는 도구입니다.
- 🤖 AI 기반 커밋 메시지 생성: Hugging Face Seq2Seq/CausalLM 모델 또는 OpenAI API 사용
- 🎨 Gitmoji 지원: 이모지가 포함된 시각적으로 매력적인 커밋 메시지
- 📝 Conventional Commits: 표준 커밋 메시지 형식 준수
- 🔍 스마트 컨텍스트 분석: Git diff와 브랜치 정보를 바탕으로 적절한 메시지 생성
- ⚡ 자동 스테이징: 변경사항을 자동으로 스테이징
- 🛡️ 안전한 커밋: 사용자 확인 후 커밋 실행
- 🔧 유연한 설정: 다양한 모델과 옵션 지원
- 📄 본문 자동 생성: 커밋 메시지 본문도 자동으로 생성
- 🔄 자동 Fallback: Seq2Seq 모델 실패 시 CausalLM으로 자동 전환
- 의존성 설치:
pip install -r requirements.txt- 실행 권한 부여 (Linux/Mac):
chmod +x auto-commit.py{
"backend": "hf", // "hf" 또는 "openai"
"models": {
"default": "t5-small", // Seq2Seq 모델
"fallback": "gpt2" // CausalLM fallback 모델
},
"openai": {
"api_key": "your-openai-api-key",
"model": "gpt-3.5-turbo"
},
"huggingface": {
"api_key": "your-hf-api-key",
"inference_endpoint": ""
}
}# OpenAI API 키
export OPENAI_API_KEY="your-openai-api-key"
# Hugging Face API 키
export HF_API_KEY="your-hf-api-key"# Hugging Face Seq2Seq 모델 사용 (기본값)
python auto-commit.py
# OpenAI API 사용
python auto-commit.py --backend openai
# 특정 모델 사용
python auto-commit.py --model gpt2
python auto-commit.py --backend openai --model gpt-4--repo, -r: Git 저장소 경로 (기본값: 현재 디렉토리)--model, -m: 모델명 (기본값: config.json에서 로드)--backend, -b: 백엔드 선택 (hf/openai)--openai-api-key: OpenAI API 키--hf-api-key: Hugging Face API 키--no-stage: 자동 스테이징 비활성화--dry-run: 드라이 런 모드 (실제 커밋 안함)--list-models: 사용 가능한 모델 목록 출력
# 기본 사용 (Hugging Face Seq2Seq)
python auto-commit.py
# OpenAI API 사용
python auto-commit.py --backend openai
# API 키와 함께 사용
python auto-commit.py --backend openai --openai-api-key "sk-..."
# 드라이 런 (테스트)
python auto-commit.py --dry-run
# 자동 스테이징 없이
python auto-commit.py --no-stage
# 사용 가능한 모델 확인
python auto-commit.py --list-modelst5-small(기본값) - Google의 T5 모델의 작은 버전으로 안정적이고 빠른 Seq2Seq 모델t5-base- T5 모델의 기본 버전t5-large- T5 모델의 큰 버전 (더 정확하지만 느림)
microsoft/DialoGPT-mediummicrosoft/DialoGPT-smallmicrosoft/DialoGPT-largegpt2gpt2-mediumdistilgpt2HuggingFaceH4/zephyr-7b-betamistralai/Mistral-7B-Instruct-v0.2
gpt-3.5-turbogpt-4gpt-4-turbo
- 장점: 입력(diff)을 받아 출력(커밋 메시지)을 생성하는 구조로 커밋 메시지 생성에 최적화
- 특징: 더 정확하고 일관된 커밋 메시지 생성
- 사용: 기본적으로
t5-small사용
- 장점: 텍스트 생성에 특화된 모델들
- 특징: Seq2Seq 모델 로드 실패 시 자동으로 fallback
- 사용: 다양한 대화형 모델 지원
생성되는 커밋 메시지는 Conventional Commits + Gitmoji 형식을 따릅니다:
✨ feat(api): 사용자 인증 기능 추가
JWT 기반 인증 로직 및 테스트 추가.
기존 로그인 방식과 호환됨.
| 타입 | Gitmoji | 설명 |
|---|---|---|
feat |
✨ | 새로운 기능 추가 |
fix |
🐛 | 버그 수정 |
docs |
📄 | 문서 수정 (README 등) |
style |
💄 | 코드 포맷팅 (세미콜론, 공백, 들여쓰기 등) |
refactor |
🔁 | 기능 변화 없는 코드 구조 개선 |
test |
✅ | 테스트 코드 추가 및 수정 |
chore |
🔧 | 빌드 설정, 패키지 매니저 수정 등 기타 작업 |
ci |
🚀 | CI/CD 관련 설정 변경 |
build |
🏗️ | 빌드 시스템 또는 의존성 관련 변경 |
revert |
⏪ | 이전 커밋 되돌리기 |
etc |
🧰 | 여러 타입을 한 번에 처리 |
- 변경사항 감지: Git 저장소의 변경사항을 확인
- 자동 스테이징: 변경된 파일들을 스테이징 (옵션)
- 컨텍스트 분석: Git diff와 브랜치 정보 수집
- 모델 로드: Seq2Seq 모델 우선 시도, 실패 시 CausalLM으로 fallback
- AI 메시지 생성: 선택된 백엔드로 커밋 메시지 생성
- 형식 검증: Conventional Commits + Gitmoji 형식으로 보정
- 사용자 확인: 생성된 메시지를 사용자에게 표시하고 확인
- 커밋 실행: 확인 후 실제 커밋 수행
- Hugging Face: 첫 실행 시 모델 다운로드에 시간이 걸릴 수 있습니다
- Seq2Seq 모델: 커밋 메시지 생성에 특화되어 더 정확한 결과를 제공합니다
- 자동 Fallback: Seq2Seq 모델 로드 실패 시 자동으로 CausalLM으로 전환됩니다
- OpenAI: API 호출 비용이 발생할 수 있습니다
- GPU: GPU가 있다면 자동으로 CUDA를 사용하여 성능이 향상됩니다
# 더 작은 모델 사용
python auto-commit.py --model distilgpt2
# OpenAI API 사용
python auto-commit.py --backend openai# CPU 전용 모드 (환경변수 설정)
export CUDA_VISIBLE_DEVICES=""
python auto-commit.py# 환경변수 확인
echo $OPENAI_API_KEY
echo $HF_API_KEY
# 명령행에서 직접 지정
python auto-commit.py --backend openai --openai-api-key "sk-..."MIT License
버그 리포트나 기능 제안은 이슈로 등록해주세요.