Show HN: PR을 위해 커밋을 자동으로 정리하는 도구
요약
Git Smart Squash는 AI를 활용하여 복잡하게 얽힌 커밋 히스토리를 자동으로 정리하고 재구성하는 도구입니다. 이 도구는 'fix', 'typo', 'WIP' 같은 임시 커밋들을 분석하여 논리적이고 깔끔한 메시지를 가진 커밋들로 자동 스쿼시(squash)합니다. OpenAI, Anthropic, Gemini 등 다양한 LLM API를 지원하며 로컬 환경에서도 사용할 수 있습니다.
핵심 포인트
- AI 기반으로 복잡한 커밋 히스토리를 자동으로 정리합니다.
- 수동 리라이팅 작업 없이 깔끔한 PR을 만들 수 있습니다.
- OpenAI, Anthropic, Gemini 등 주요 LLM을 연동하여 사용 가능합니다.
- 로컬 환경(Ollama)에서도 무료로 사용할 수 있는 옵션을 제공합니다.
Git Smart Squash
커밋을 수동으로 재구성하며 시간을 낭비하지 마세요. AI가 대신 처리하게 하세요.
문제점 (The Problem)
이런 경험 있으시죠: 하나의 기능에 대해 커밋이 15개인데, 그중 절반은 'fix', 'typo' 또는 'WIP'입니다. 이제 PR 검토를 위해 이것들을 정리해야 합니다. 수동으로 squash하고 리라이팅하는 것은 지루한 작업입니다.
해결책 (The Solution)
Git Smart Squash는 변경 사항을 분석하여 적절한 메시지를 가진 논리적인 커밋들로 재구성합니다:
# 이전 상태: 복잡하게 얽힌 브랜치
* fix tests
* typo
...
빠른 시작 (Quick Start)
1. 설치 (Install)
# pip 사용
pip install git-smart-squash
...
2. AI 설정 (Set up AI)
옵션 A: 로컬 환경 (Local) (무료, 비공개)
# https://ollama.com에서 Ollama 설치
ollama pull devstral # 기본 모델
옵션 B: 클라우드 환경 (Cloud) (더 나은 결과)
export OPENAI_API_KEY="your-key"
export ANTHROPIC_API_KEY="your-key"
export GEMINI_API_KEY="your-key"
3. 실행 (Run)
cd your-repo
git-smart-squash
끝입니다. 계획을 검토하고 승인하세요.
커맨드 라인 파라미터 (Command Line Parameters)
| Parameter | Description | Default |
|---|---|---|
--base | 비교할 기준 브랜치 (Base branch) | 설정 파일 또는 main |
| ... |
추천 모델 (Recommended Models)
기본 모델 (Default Models)
- OpenAI:
gpt-5(기본),gpt-5-mini,gpt-5-nano- GPT-5 모델만 지원, 기본 추론 수준: 낮음(low) - Anthropic:
claude-sonnet-4-20250514(기본) - Gemini:
gemini-2.5-pro(기본) - Local/Ollama:
devstral(기본)
모델 선택 (Model Selection)
# 다른 모델 지정
git-smart-squash --ai-provider openai --model gpt-5-mini
...
마이그레이션: OpenAI에서 GPT-5로 (Responses API)
- OpenAI 통합은 이제 Responses API를 사용하며, GPT‑5 모델만 지원합니다.
- 지원되는 모델:
gpt-5(기본값),gpt-5-mini,gpt-5-nano. --reasoning을 사용하여 추론 노력을 제어할 수 있습니다 (high | medium | low | minimal; 기본값:low).- 이전에 GPT‑4.* 모델을 사용했다면, GPT‑5로 전환하거나 다른 제공업체를 선택하세요:
- OpenAI:
--ai-provider openai --model gpt-5 - Anthropic:
--ai-provider anthropic --model claude-sonnet-4-20250514 - Gemini:
--ai-provider gemini --model gemini-2.5-pro - 로컬 (Ollama):
--ai-provider local --model devstral
- OpenAI:
- CLI에는 부드러운 사전 검사 기능이 포함되어 있습니다: OpenAI를 선택했지만 GPT‑5가 아닌 모델을 사용하면, 마이그레이션 지침과 함께 유용한 메시지가 표시됩니다.
추론 예시:
git-smart-squash --ai-provider openai --model gpt-5 --reasoning high
사용자 정의 지침 (Custom Instructions)
--instructions 매개변수를 사용하면 커밋이 어떻게 정리될지 제어할 수 있습니다:
예시
git-smart-squash -i
## AI 제공업체 (AI Providers)
| 제공업체 | 비용 | 개인 정보 보호 |
|----------|------|---------|
| **Ollama** | 무료 | 로컬 |
| ... |
## 고급 설정 (Advanced Configuration) (선택 사항)
사용자 정의하려면 설정 파일을 생성하세요:
**프로젝트별** (`.git-smart-squash.yml`을 저장소에 위치):
```yaml
ai:
provider: openai # 이 프로젝트에는 OpenAI 사용
reasoning: medium # 중간 수준의 추론 노력 사용
...
전역 기본값 (~/.git-smart-squash.yml):
ai:
provider: local # 항상 로컬 AI를 기본으로 사용
max_predict_tokens: 50000 # 로컬 모델에 대한 보수적인 출력 제한
...
문제 해결 (Troubleshooting)
"Invalid JSON" 오류
이것은 일반적으로 AI 모델이 응답을 제대로 형식화하지 못했음을 의미합니다:
- Ollama 사용 시:
llama2대신mistral또는mixtral로 전환하세요. - 해결 방법:
ollama pull mistral를 실행한 후 다시 시도하세요. - 대안:
--ai-provider openai를 사용하여 클라우드 제공업체를 이용하세요.
모델이 지침을 따르지 않는 경우 (Model Not Following Instructions)
일부 모델은 복잡한 지침 처리에 어려움을 겪습니다:
- 더 나은 모델 사용:
--model gpt-5또는--model claude-3-opus를 사용하세요. - 지침 단순화: 명확한 하나의 지시가 여러 개의 지시보다 효과적입니다.
- 구체적으로 명시: "티켓 번호를 추가하라" 대신 "[ABC-123]로 접두사 붙이기"와 같이 작성하세요.
"Ollama not found" 오류
# https://ollama.com에서 설치
ollama serve
ollama pull devstral # 기본 모델
커밋 그룹화가 부실한 경우 (Poor Commit Grouping)
AI가 너무 많은 커밋을 생성하거나 그룹화가 잘 안 될 때:
- 모델 부족: 더 큰 모델을 사용하세요.
- 지침 추가: `-i
대규모 변경 사항 / 토큰 제한
로컬 모델은 약 32k 토큰 제한을 가집니다. 대규모 변경 사항의 경우:
- 더 최신 커밋과 함께
--base사용하기 - 클라우드로 전환:
--ai-provider openai - 작은 PR들로 분할하기
도움이 필요하신가요?
상세 문서를 확인하거나 이슈를 열어주세요!
라이선스
MIT License - 자세한 내용은 [LICENSE] 파일을 참고하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기