일기 slecs

개인 메모 파일이 저장소를 오염시키는 일 방지

목차

개발하다 보면 생기는 임시 노트, 설계 메모, 체크리스트 같은 파일들이 있다. 내 경우 _notes/ 디렉토리에 issue-site-plan.md 파일을 작업 중 만들어서 이슈 분석이나 계획을 정리했는데, 실수로 저장소에 커밋해버렸다. 이번 커밋은 그 파일을 untrack하고 .gitignore에 _notes/를 추가해서 앞으로 비슷한 일이 일어나지 않도록 정리한 작은 정리 커밋이다.

로컬 메모는 왜 저장소의 노이즈가 되나

프로젝트를 진행하다 보면 머리로만 생각하기보다는 파일에 메모를 한다. 이슈 분석, 아키텍처 스케치, 진행 상황 체크리스트 — 이런 것들은 개인의 생각 정리 과정의 일부다. 나 혼자 작업할 때야 괜찮지만, 팀이 코드를 공유하면 상황이 달라진다. 다른 팀원이 pull 받을 때 "왜 이 파일이 여기 있지?", "이건 누가 만들었고 언제 삭제하나?" 같은 혼동을 줄 수 있다. 더 심하면 누군가 그 메모를 팀 공식 문서로 착각할 수도 있다.

특히 깃 히스토리 관점에서도 문제다. 개인 메모 파일이 변경될 때마다 커밋이 생기면 실제 기능 변경과 무관한 노이즈가 저장소 히스토리에 쌓인다. git log를 볼 때 "어떤 커밋이 정말 중요한 변경인가"를 파악하기 어려워진다. 팀이 커질수록 이런 노이즈는 비용이 된다.

.gitignore로 로컬 파일 체계적으로 관리하기

내가 한 작업은 간단했다. 먼저 .gitignore에 다음 줄을 추가했다:

_notes/

이미 커밋된 _notes/issue-site-plan.md는 이 한 줄로는 untrack되지 않는다. 깃은 이미 tracking 중인 파일은 .gitignore 규칙을 적용하지 않기 때문이다. 따라서 다음 명령으로 명시적으로 제거했다:

git rm --cached _notes/issue-site-plan.md

--cached 플래그는 중요하다. 파일을 실제로 삭제하는 게 아니라, 깃 index에서만 제거한다는 뜻이다. 로컬 작업 파일은 내 컴퓨터에 남아 있고, 나중에 참고할 수 있다. 다만 더 이상 버전 관리의 대상이 아니게 된다.

이렇게 정리하는 일의 의미

이건 작은 "정리" 커밋처럼 보이지만, 팀 협업 관점에서는 중요한 신호다.

관점 문제 상황 개선된 상황
저장소 크기 불필요한 메모 파일들이 히스토리에 남음 실제 코드만 추적, 클론 속도 빨라짐
팀 협업 개인 메모가 공식 문서와 섞임 의도가 명확함 (코드 = 팀 산출물)
히스토리 가독성 메모 수정으로 인한 노이즈 커밋 실제 기능/버그 수정만 기록됨
새로운 팀원 "이 파일은 뭐지?" 혼동 유발 구조가 깔끔해서 빨리 파악

비슷한 실수를 방지하는 방법

내가 배운 건 .gitignore를 "사후 처리"로 보는 게 아니라, 프로젝트 시작할 때부터 의도적으로 설계해야 한다는 것이다. 팀이 일반적으로 만드는 로컬 파일들을 미리 정의해두고:

  • _notes/ — 개인 설계/분석 메모
  • .env.local, .env.*.local — 로컬 개발 환경 변수
  • *.swp, .DS_Store — 에디터/OS 임시 파일
  • build/, dist/ — 빌드 결과물
  • node_modules/, .venv/ — 의존성

이런 규칙을 .gitignore에 사전에 포함하면, 새로운 팀원도 "아, 이런 파일들은 저장소에 올리는 게 아니구나" 하고 자연스럽게 따르게 된다. 리뷰어 입장에서도 이미 .gitignore로 필터링되면 코드 리뷰에 집중할 수 있다.

커밋 메시지에 "by mistake"라고 명시한 건 팀한테 "이건 의도된 정리"임을 알리려는 의도였다. 실수는 누구나 한다. 중요한 건 그걸 빨리 발견해서 정리하는 문화다. 이런 작은 정리 커밋들이 쌓이면 저장소가 건강해진다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.