Git을 사용하다 보면 반드시 만나게 되는 파일이 있다. 바로 .gitignore다. 이 작은 파일 하나가 프로젝트 관리를 훨씬 깔끔하게 만들어준다.
.gitignore는 Git 버전 관리에서 제외할 파일들을 지정하는 파일이다. 이 파일에 등록된 파일이나 폴더는 Git이 추적하지 않아 커밋 대상에서 자동으로 제외된다.
확장자 없이 파일명이 .gitignore이며, 프로젝트 루트 디렉토리에 위치한다.
프로젝트 개발과 무관하거나 빌드 과정에서 생성되는 임시 파일, 컴파일된 결과, IDE 설정 파일 등을 Git repository에 포함하지 않음으로써 저장소 용량과 클론 속도를 최적화할 수 있다.
암호나 API 키, 인증 토큰과 같이 보안에 민감한 정보가 담긴 파일을 Git으로 관리하지 않도록 한다. 이를 통해 개인 정보 유출 등의 보안 문제를 방지할 수 있다.
개발자마다 다르거나 특정 환경에 종속적인 설정 파일들은 버전 관리를 통해 공유할 필요가 없을뿐더러 공유 시 충돌 문제를 야기한다.
.idea 폴더는 IntelliJ의 IDE 옵션(프로젝트별 설정값)을 저장하는 폴더다. IDE의 각 옵션은 작업자의 컴퓨터 환경에 맞춰서 설정되므로, 이를 다른 작업자에게 공유하면 소스 오류가 발생할 수 있어 .gitignore에 추가해야 한다.
.gitignore라는 이름의 파일을 만든다.| 표현 | 의미 |
|---|---|
#, 빈라인 | #은 주석을 의미하며, 빈 라인은 아무런 영향을 주지 않는다 |
fileName.js | 특정 파일 fileName을 무시한다 |
./fileName_1.js | 현재 경로에 있는 fileName_1만 무시한다 |
*.a | 확장자가 .a 인 모든 파일을 무시한다 |
folderName/my.txt | 특정 경로의 특정 파일(my.txt)을 제외한다 |
folderName/ | 해당 폴더의 모든 파일을 무시한다 |
folderName/**/fileName_2.txt | 해당 폴더 아래의 모든 fileName_2를 무시한다 |
folderName/*.a | 해당 폴더의 확장자가 .a 인 모든 파일을 무시한다 |
folderName/*/*.a | 해당 폴더를 포함한 하위 모든 폴더에서 확장자가 .a 인 모든 파일을 무시한다 |
./*.a | 현재 폴더의 확장자가 .a 인 모든 파일을 무시한다 |
!fileName.txt | 특정 파일을 무시하지 않는다(예외) |
| 표현 | 의미 |
|---|---|
/ | root |
./ | 현재 위치 (보통 생략) |
../ | 상위 경로 |
이미 Git에 올라가 있는 파일은 .gitignore에 추가해도 계속 추적된다. 이미 버전 관리에 포함된 파일들을 제외하려면 수동으로 Git에서 제거해야 한다.
git rm --cached 파일명
git rm -r --cached 폴더명
.gitignore는 작지만 매우 중요한 파일이다. 프로젝트 초기에 제대로 설정해두면 불필요한 파일들로 인한 문제를 미리 방지할 수 있다.
핵심은 컴파일 결과물, IDE 설정 파일, 민감한 정보, 임시 파일들을 적절히 무시하는 것이다. gitignore.io 같은 도구를 활용하면 쉽게 시작할 수 있다.