봇 프로젝트 Git 관리: 제외 규칙·비밀 노출 대응·배포 기록
TECH INSIGHT / EXPLAINED
유용한 Git 흐름은 코드 변경을 기록하면서 실제 자격증명을 저장소 밖에 둡니다. 제외 규칙·staged diff 검토·비밀 탐지·추적 가능한 배포 기록을 함께 사용하며 어느 하나도 완전한 보장은 아닙니다.
시험한 제외 규칙으로 시작
자리표시자만 든 config.example.ini를 만들고 실제 설정을 분리합니다. .gitignore에서 #는 주석 행의 시작이며 예외 패턴 뒤에 안전하게 붙이는 인라인 주석이 아닙니다. 따라서 예외 행은 정확히 !config.example.ini여야 합니다. 아래 규칙은 흔한 프로젝트 경로를 다루며 실제 파일명으로 시험해야 합니다.
# Keep comments on their own lines.
config*.ini
!config.example.ini
.env*
!.env.example
secrets/
keystore/
*.key
*.pem
logs/
data/
__pycache__/
.venv/커밋될 스냅숏 검토
--cached 없는 git diff는 작업 트리와 index 차이를 보여주며 커밋 예정 내용을 모두 보여주는 것은 아닙니다. staged 파일 목록을 먼저 보고 내용과 설정한 비밀 탐지 결과를 확인하세요. 탐지는 누락할 수 있고 로컬 hook은 우회할 수 있습니다. 사용 가능한 서버의 push protection도 추가 계층으로 활용합니다.
git check-ignore -v --no-index -- config_real.ini .env
git status --short
git add -- .gitignore config.example.ini
git diff --cached --name-status
git diff --cached -- .gitignore config.example.ini이미 추적한 파일과 무시할 파일은 다르다
패턴 추가는 이미 추적한 파일을 빼지 않습니다. 로컬 파일을 보존하고 index에서 제거할 변경을 검토한 뒤 git rm --cached -- config.ini를 쓰면 디스크 파일을 남기고 추적을 해제합니다. 제외 규칙도 함께 stage해야 합니다. 이는 이후 스냅숏 변경이지 과거 이력 삭제가 아닙니다.
환경변수는 소스의 키 문자열을 피하지만 셸 이력·CI 로그·디버깅 출력·커밋된 .env에서 유출될 수 있습니다. 가능한 경우 배포 플랫폼의 비밀 관리 기능을 사용하고 접근을 제한하며 자리표시자로 실전 연동이 시작되지 않게 검증합니다.
이력 재작성 전에 노출 대응
공개된 API 자격증명은 제공자에서 폐기·교체하고 접근·계좌 활동을 조사합니다. 이후 관련 이력·산출물·로그의 민감한 사본을 정리합니다. 개인키는 복구 모델이 다릅니다. Git을 고쳐 다시 비밀로 만들 수 없으며 자산 이전은 별도로 신중하게 확인한 복구 절차가 필요합니다.
협업자와 호스팅 제공자의 민감 자료 제거 절차를 따릅니다. 이력 재작성은 commit ID를 바꾸며 태그·PR·서명·기존 clone에 영향을 줄 수 있고 fork나 캐시 사본도 남을 수 있습니다. 모든 브랜치에 일반적인 force push를 하는 것만으로 완전한 청소가 되지는 않습니다. 이력 청소는 확산 억제의 일부이고 폐기는 자격증명의 지속 권한을 없앱니다.
브랜치 이름보다 실제 배포 기록
개인 프로젝트는 main과 짧은 feature 브랜치로도 운영할 수 있으며 dev는 통합 검증 단계가 실제로 필요할 때 선택합니다. 브랜치 포인터는 움직입니다. 배포 commit·시험한 이미지 digest·설정 revision·DB 스키마를 release manifest에 기록하세요.
이전 태그 checkout은 로컬 파일을 바꿀 뿐 실행 중 프로세스를 교체하거나 DB를 복원하거나 주문을 대조하지 않습니다. 되돌리기는 호환되는 상태에 검토된 산출물을 배포하고 중복 작업자를 멈춘 뒤 계좌·주문 상태까지 확인하는 과정입니다. 커밋 메시지에는 변경과 근거를 적되 가상 수수료 계산을 측정한 수익처럼 쓰지 않습니다.
공식 자료와 함께 읽기
Git ignore syntax · Git staged diff · GitHub sensitive-data removal · GitHub secret scanning
내용·예제 검토: 2026-09-29
댓글
댓글 쓰기