개발자들이 프로젝트를 진행하면서 흔히 겪는 문제 중 하나는 Git 저장소에 불필요하거나 민감한 파일이 실수로 커밋되는 것입니다. '.DS_Store' 같은 운영체제 파일, 'node_modules' 같은 의존성 파일, IDE 설정 파일, 심지어 환경 변수까지 의도치 않게 포함되는 경우가 많습니다. 이러한 실수는 나중에 저장소 기록에서 해당 파일을 제거하는 번거로운 작업으로 이어지곤 합니다. 이에 대한 대안으로, 기본적으로 모든 파일을 무시하고 필요한 파일만 명시적으로 Git에 포함시키는 역발상적인 '.gitignore' 전략이 제안되었습니다.
이 새로운 접근 방식은 '.gitignore' 파일에 '*'(모든 파일 무시)를 먼저 선언한 다음, '!' 접두사를 사용하여 Git에 포함할 파일들을 명시하는 방식입니다. 예를 들어, Go 프로젝트의 경우 '.gitignore' 파일에 '*\n!.gitignore\n!*.go\n!README.md\n!go.mod\n!go.sum'과 같이 작성할 수 있습니다. 이렇게 하면 '.gitignore' 파일 자체, Go 소스 파일, README 파일, Go 모듈 및 의존성 파일만 Git에 의해 추적됩니다. 이 방식은 기존의 '허용하고 예외를 무시하는' 방식과 달리, '모든 것을 무시하고 예외만 허용하는' 방식으로 동작하여, 개발자가 의도하지 않은 로컬 파일이 저장소에 포함될 가능성을 원천적으로 차단합니다.
이러한 '.gitignore' 전략은 특히 로컬 개발 환경에서 수많은 임시 파일이나 에이전트 문서, 서브폴더 등이 생성되는 현대 프로젝트에서 더욱 유용할 수 있습니다. 복잡하고 긴 '.gitignore' 목록을 관리하는 대신, 핵심 파일만 명확히 지정함으로써 저장소의 무결성을 높이고 관리 부담을 줄일 수 있습니다. 모든 프로젝트에 적용하기에 적합한 것은 아니지만, 민감한 정보 유출 방지나 저장소의 깔끔함을 중요하게 생각하는 개발자들에게는 강력한 대안이 될 수 있습니다. Git이 특정 경로를 무시하는지 확인하려면 'git check-ignore -v [경로]' 명령어를 사용할 수 있어, 이 새로운 방식 적용 시 파일 추적 여부를 쉽게 검증할 수 있습니다.
