master # 운영 배포 브랜치 (직접 커밋 금지)
└── feature/ # 기능 개발
└── fix/ # 버그 수정
└── refactor/ # 리팩토링
└── docs/ # 문서 작성
브랜치 네이밍
# 기능 개발
feature/add-news-search
# 버그 수정
fix/news-pagination-error
# 리팩토링
refactor/news-service-extract
# 문서
docs/api-guide-update
커밋 메시지 규칙
[접두사] 간결한 제목 (50자 이내)
(선택) 본문 — 변경 이유, 주의사항 등
접두사 목록
접두사
사용 상황
[feat]
새 기능 추가
[fix]
버그 수정
[refactor]
코드 리팩토링 (기능 변경 없음)
[docs]
문서 작성/수정
[test]
테스트 추가/수정
[style]
포매팅, 세미콜론 등 (코드 변경 없음)
[chore]
빌드, 의존성 등 기타 작업
커밋 예시
git commit -m "[feat] 뉴스 검색 기능 추가"
git commit -m "[fix] 페이지네이션 계산 오류 수정"
git commit -m "[refactor] NewsService 메서드 분리"
git commit -m "[docs] API 설계 가이드 작성"
커밋 단위
기능 하나, 버그 하나 단위로 커밋
여러 파일을 수정해도 하나의 목적이면 하나의 커밋
관련 없는 변경사항 혼재 금지
# 좋은 예
git add src/domain/news/service/NewsService.java
git add src/domain/news/controller/NewsController.java
git commit -m "[feat] 뉴스 키워드 검색 API 추가"
# 나쁜 예 — 관련 없는 변경 혼재
git add -A
git commit -m "여러 수정"
작업 흐름
# 1. master에서 브랜치 생성
git checkout master
git pull origin master
git checkout -b feature/add-news-search
# 2. 개발 및 커밋
git add <파일>
git commit -m "[feat] 뉴스 검색 기능 추가"
# 3. 원격 브랜치 push
git push origin feature/add-news-search
# 4. PR 생성 → 코드 리뷰 → master 머지
# (GitHub에서 Pull Request 생성)
# 5. 머지 후 브랜치 삭제
git branch -d feature/add-news-search
.gitignore 필수 항목
# 빌드 결과물
build/
.gradle/
out/
# 민감 정보
.env
.env.*
application-prod.yml
application-local.yml
agent.env
*.pem
*.key
# IDE
.idea/
*.iml
*.iws
# OS
.DS_Store
Thumbs.db
# 로그
*.log
logs/
GitHub 저장소
원격 저장소: git@github.com:MooPee/scraping.git
기본 브랜치: master
master 브랜치 직접 push 금지
PR 머지 시 Squash or Merge 커밋 사용
주의사항
application-prod.yml, application-local.yml, .env 파일은 절대 커밋 금지
SSH 키 (*.pem) 파일 커밋 절대 금지
git 히스토리에 민감 정보가 포함됐다면 → git filter-branch 또는 BFG Repo-Cleaner 사용