.gitignore 파일은 로컬 프로젝트에서 Git이 무시해야 할 파일들의 목록을 담고 있습니다. 이 파일은 일반적으로 프로젝트의 루트(최상위) 디렉터리에 위치하며, 단일 파일, 여러 개의 파일 또는 폴더 전체를 무시하도록 설정할 수 있습니다.
Git 저장소에 포함하고 싶지 않은 파일들이 있을 수 있습니다. 예를 들어 다른 협업자에게 보여주고 싶지 않은 비공개 설정값이나 로컬 환경 변수가 담긴 파일들이 그렇습니다.
바로 이럴 때 .gitignore 파일이 유용합니다. 이 파일을 통해 Git에게 특정 파일들을 무시하라고 지시할 수 있습니다.
이 가이드에서는 .gitignore가 무엇인지, 어떻게 동작하는지, 그리고 직접 .gitignore 파일을 작성하는 방법까지 차근차근 알아보겠습니다. 그럼 시작해 보겠습니다!
.gitignore 파일이란?
.gitignore 파일은 Git이 무시할 파일들의 목록을 담은 텍스트 파일로, 보통 프로젝트의 루트 디렉터리에 위치합니다. 한 번 Git이 추적(tracking)하기 시작한 파일은 프로젝트에서 제거하지 않는 한 무시되지 않는다는 점에 유의하세요.
파일을 커밋에 추가할 때 * 연산자를 사용하면 모든 파일이 스테이징됩니다. 즉, 설정 파일이나 컴파일된 코드까지도 의도치 않게 커밋에 포함될 수 있습니다.
개발자들은 보통 출력 폴더, 숨김 시스템 파일, 컴파일된 코드 등을 무시하고 싶어 합니다. 예를 들어 저장소에 .env 파일이 있다면 이를 숨기는 것이 좋습니다. .env 파일에는 보통 API 키가 들어 있어서 저장소에 커밋하지 않는 것이 안전하기 때문입니다.
참고로 파일을 무시하는 별도의 전용 명령어는 없습니다. 대신 무시하고 싶은 파일들을 .gitignore 파일에 직접 목록으로 작성해야 합니다.
.gitignore 파일 작성 방법
.gitignore 파일을 만드는 방법은 아주 간단합니다. 명령 셸을 열고 프로젝트 루트 디렉터리에 .gitignore라는 이름의 텍스트 파일을 생성하면 됩니다. touch 명령어를 활용할 수 있습니다.
파일이 생성되면 별도의 설정 없이 바로 사용할 수 있으며, 다음 단계는 무시하고 싶은 파일들의 목록을 추가하는 것입니다. 이렇게 지정된 파일들은 '추적되지 않는(untracked) 파일'이 되며, 이는 로컬 저장소에서 Git이 무시하는 파일을 의미합니다.
다음 .gitignore 파일 예제를 살펴보겠습니다.
이 파일은 두 가지 리소스를 무시합니다. 바로 node_modules 디렉터리의 모든 파일과 .env 파일입니다. 폴더 하나와 파일 하나, 총 두 개의 항목을 무시하도록 설정한 것입니다.
이는 JavaScript 프로젝트에서 흔히 사용되는 설정입니다. node_modules에는 프로젝트에서 사용하는 모든 의존성 패키지의 로컬 사본이 담겨 있는데, 언제든 직접 설치할 수 있는 것들을 굳이 저장소에 커밋하는 것은 비효율적입니다. 또한 .env 파일에는 API 키가 들어 있으므로, 여러 사람이 접근할 수 있는 저장소에 공유하는 것은 좋지 않은 습관입니다.
여러 개의 파일이나 디렉터리를 무시하고 싶다면 * 와일드카드를 사용하면 됩니다.
예를 들어 저장소의 모든 .pyc 파일을 무시해 보겠습니다.
이렇게 하면 *.pyc 패턴과 일치하는 모든 파일이 무시됩니다. 별표(*)가 와일드카드 연산자 역할을 합니다.
또한 GitHub는 다양한 개발 환경에서 활용할 수 있는 gitignore 파일 모음집을 공개적으로 제공하고 있으니, 프로젝트에 맞는 템플릿을 찾아 활용해 보세요.
여러 개의 .gitignore 파일 사용하기
같은 저장소에서 여러 개의 .gitignore 파일을 사용할 수도 있습니다. .gitignore의 규칙은 해당 파일이 위치한 디렉터리를 기준으로 적용되기 때문입니다.
앞선 예제에서는 .gitignore를 프로젝트 루트 디렉터리에 두었습니다. 이번에는 diff/ 폴더 안에서 .pyc 확장자를 가진 모든 파일을 무시하고 싶다고 가정해 보겠습니다. 명령줄로 diff 폴더 안에 .gitignore 파일을 생성하면 됩니다.
그리고 새로 만든 .gitignore 파일에 무시 규칙을 추가합니다.
이후 코드를 커밋할 때 Git은 diff/ 폴더 내에서 .pyc로 끝나는 모든 파일을 자동으로 무시합니다.
이 방식은 특정 폴더에만 적용할 규칙이 필요할 때 유용합니다. 하지만 한 프로젝트에 여러 개의 .gitignore 파일이 흩어져 있으면 오히려 관리가 혼란스러워질 수 있습니다. 대안으로, 무시할 파일 경로를 더 구체적으로 명시하여 모든 규칙을 하나의 .gitignore 파일에 모아 관리하는 방법도 있습니다. 다음 파일을 살펴보세요.
이 .gitignore 파일은 Git 프로젝트의 루트 디렉터리에 위치하며, 프로젝트 전체에서 .txt로 끝나는 모든 파일을 무시하도록 지시합니다. 동시에 diff/ 폴더 안의 .pyc로 끝나는 파일들도 무시하도록 설정되어 있습니다.
전역(Global) Git Ignore 규칙 만드는 방법
프로젝트를 만들 때마다 매번 .gitignore 파일을 정의하는 것은 번거로운 작업입니다. 게다가 대부분의 프로젝트는 비슷한 .gitignore 규칙을 공유하는 경우가 많습니다.
전역(global) git ignore 규칙을 설정하면 시스템의 모든 저장소에 자동으로 gitignore 규칙이 적용됩니다. 이 파일은 보통 운영체제의 홈 디렉터리, 즉 /home/사용자명 또는 /Users/사용자명에 위치시킵니다.
전역 .gitignore 파일을 생성해 보겠습니다.
이 명령은 홈 디렉터리에 빈 .gitignore 파일을 생성합니다. 이 파일을 열어 시스템의 모든 Git 저장소에 적용할 규칙을 추가하면 됩니다.
gitignore 파일을 구성한 후에는 core.excludesFile 속성을 사용해 규칙을 적용할 수 있습니다.
git config --global core.excludesFile ~/.gitignore
이 명령은 ~/.gitignore 파일의 규칙을 컴퓨터의 모든 Git 저장소에 적용하도록 설정합니다.
단, 전역 git ignore 규칙을 정의할 때는 주의가 필요합니다. 전역 .gitignore의 규칙은 기본적으로 모든 프로젝트에 적용되기 때문입니다.
따라서 전역 .gitignore 파일은 .env처럼 거의 어느 저장소에도 커밋하지 않을 공통 파일들을 무시할 때 활용하는 것이 가장 좋습니다.
이미 커밋된 파일 무시하는 방법
프로젝트에서 어떤 파일을 무시해야 할지 미리 예측하기란 쉽지 않습니다. 이미 저장소에 커밋한 파일을 나중에 무시하고 싶어지는 경우도 생기곤 합니다.
config.json 파일을 무시한다고 가정해 보겠습니다. 이 파일은 이미 저장소에 커밋된 상태입니다. 먼저 .gitignore 파일에 무시 규칙을 추가합니다.
echo config.json >> .gitignore
이 명령은 .gitignore 파일 끝에 config.json을 추가합니다. 이제 저장소에서 해당 파일을 제거해야 하는데, 이때 git rm --cached 명령을 사용합니다. 이 명령은 저장소에서만 파일을 제거하며, 컴퓨터의 로컬 파일은 그대로 유지됩니다.
git rm --cached config.json
다음 커밋부터 config.json 파일은 무시됩니다.
무시된 파일 강제로 커밋하는 방법
.gitignore 파일에서 무시하도록 설정된 파일이라도 필요하다면 강제로 커밋할 수 있습니다.
예를 들어 원래는 무시되지만 저장소에 꼭 포함하고 싶은 기본 설정 파일을 만들 때 유용합니다. 파일을 스테이징 영역에 추가할 때 -f 플래그를 사용하면 무시된 파일도 커밋할 수 있습니다.
git add -f config.json git commit -m "feat: Create default config file"
이 코드는 config.json 파일을 스테이징 영역에 추가한 후, 스테이징 영역의 내용을 기반으로 커밋을 생성합니다. git add와 git commit 명령에 대한 더 자세한 내용은 각각의 공식 문서나 튜토리얼을 참고하시기 바랍니다.
마치며
.gitignore 파일을 사용하면 Git 저장소에서 특정 파일들을 손쉽게 무시할 수 있습니다.
프로젝트의 로컬 파일 중 일부는 커밋에 포함하고 싶지 않을 수 있습니다. 예를 들어 컴파일된 코드, 시스템 로그, 설정 파일 등이 그렇습니다. 이런 파일들은 .gitignore에 무시할 항목을 지정함으로써 깔끔하게 제외할 수 있습니다.
하나의 프로젝트에는 여러 개의 .gitignore 파일을 둘 수 있으며, git add 명령에 -f 플래그를 사용하면 .gitignore 규칙을 무시하고 파일을 강제로 추가할 수도 있습니다.
이제 .gitignore 파일을 전문가처럼 활용할 준비가 되셨습니다!