Posted On 2026년 02월 21일

빈 폴더의 무게: 깃이 잊고 있던 작은 진실

nobaksan 0 comments
여행하는 개발자 >> 기술 >> 빈 폴더의 무게: 깃이 잊고 있던 작은 진실

어느 프로젝트의 초기 설정 단계에서였다. 팀원 중 한 명이 빈 디렉토리를 깃 저장소에 유지하기 위해 .gitkeep 파일을 추가하자고 제안했다. 그때 문득 몇 년 전 비슷한 상황을 겪었던 기억이 떠올랐다. 그때는 왜 그 방법이 최선이라고 생각했을까? 기술은 변하지 않지만, 그 기술에 대한 이해는 시간이 갈수록 깊어진다. .gitkeep.gitignore의 차이는 단순한 파일 이름의 문제가 아니다. 그것은 깃의 본질에 대한 이해의 차이이자, 도구의 올바른 사용에 대한 고민이다.

많은 개발자들이 빈 폴더를 깃에 커밋하기 위해 .gitkeep 파일을 사용한다. 이 방법은 직관적이다. 빈 폴더는 깃이 추적하지 않기 때문에, 그 안에 아무 파일이나 하나 넣어두면 폴더가 유지된다. .gitkeep은 그 목적을 드러내는 파일 이름이다. 하지만 이 방법은 몇 가지 문제를 안고 있다. 첫째, .gitkeep은 깃의 공식적인 기능이 아니다. 깃은 이런 파일의 존재를 전혀 신경 쓰지 않는다. 그저 빈 폴더를 유지하기 위한 편법일 뿐이다. 둘째, 이 파일은 프로젝트의 실제 로직과는 무관한, 인위적인 파일이다. 프로젝트를 처음 접하는 개발자는 이 파일의 목적을 이해하기 위해 추가적인 설명을 필요로 한다.

반면, .gitignore를 사용하는 방법은 더 자연스럽다. .gitignore 파일은 깃의 공식 기능으로, 어떤 파일이나 폴더를 무시할지를 명시한다. 빈 폴더를 유지하기 위해 이 파일을 사용하면, 폴더 내의 모든 파일을 무시하되 폴더 자체는 유지하도록 설정할 수 있다. 예를 들어, 특정 폴더에 *.*와 같은 패턴을 추가하면, 그 폴더 내의 모든 파일은 무시되지만 폴더 자체는 깃에 의해 추적된다. 이 방법은 .gitkeep보다 더 명확하고, 깃의 본래 의도에 부합한다. 또한, .gitignore는 프로젝트의 다른 부분에서도 이미 사용되고 있을 가능성이 높기 때문에, 추가적인 학습 부담도 없다.

공식 깃 FAQ에서도 .gitignore를 빈 폴더 유지의 방법으로 권장한다. 이는 .gitkeep보다 실용적인 장점이 있기 때문이다. .gitignore는 폴더의 목적을 더 명확히 드러낼 수 있으며, 프로젝트의 일관성을 해치지 않는다.

기술 선택에는 항상 트레이드오프가 존재한다. .gitkeep은 빠르고 간단하지만, 장기적으로는 프로젝트의 복잡성을 증가시킨다. 반면, .gitignore는 초기 설정이 약간 더 복잡할 수 있지만, 프로젝트의 일관성과 유지보수성을 높인다. 이 차이는 마치 임시방편과 근본적인 해결책의 차이와 같다. 임시방편은 당장 문제를 해결해주지만, 시간이 지나면 그 해결책 자체가 새로운 문제를 야기할 수 있다. 반면, 근본적인 해결책은 처음부터 올바른 방향으로 나아갈 수 있도록 돕는다.

개발자로서 우리는 종종 이런 작은 결정들에 직면한다. 어떤 도구를 사용할지, 어떤 패턴을 따를지, 어떤 규칙을 정할지. 이런 결정들은 사소해 보이지만, 프로젝트의 품질과 팀의 생산성에 큰 영향을 미친다. .gitkeep.gitignore의 선택은 그 중 하나다. 이 선택은 깃의 본질을 이해하고, 도구를 올바르게 사용하는 방법에 대한 고민의 결과물이어야 한다.

빈 폴더를 유지하는 문제는 사소해 보일 수 있지만, 그 안에는 더 큰 교훈이 숨어 있다. 기술은 단순히 작동하는 것으로 충분하지 않다. 그것이 왜 작동하는지, 그리고 더 나은 방법이 있는지 끊임없이 질문해야 한다. 그래야만 우리는 더 나은 개발자가 될 수 있다. 이 작은 결정들이 모여 프로젝트의 품질을 결정짓고, 결국은 우리가 만드는 소프트웨어의 신뢰성을 좌우한다.

더 읽어보기: Don’t create .gitkeep files, use .gitignore instead


이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Related Post

Basecamp의 Upright: Playwright와 Prometheus로 합성 모니터링 구축하기

Basecamp가 오픈소스로 공개한 Upright는 Playwright와 Prometheus를 결합한 합성 모니터링(Synthetic Monitoring) 도구입니다. 합성 모니터링이란? 실제 사용자…

시니어 개발자가 되는 길

시니어 개발자는 코드를 잘 짜는 사람이 아니다. 물론 코드도 잘 짜야 한다. 하지만 그것만으로는 부족하다.…

Claude Code에서 Figma로: 코드가 디자인이 되는 순간

개발자로 20년 가까이 일하면서, 코드와 디자인 사이의 간극은 언제나 골칫거리였다. 디자이너가 만든 시안을 개발자가 구현하고,…