어느 프로젝트의 초기 설정 단계에서였다. 팀원 중 한 명이 빈 디렉토리를 깃 저장소에 유지하기 위해 .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
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.