Git

파일 관리 목록에서 제외

bde574786 2025. 2. 18. 19:55

깃은 tracked 상태인 모든 것은 추적 관리하지만 추적하지 않아야 하는 경우도 있다. Working Directory에 불필요한 파일이 생성되거나 보안에 민감한 파일이 있을 수 있다. 로컬 저장소를 혼자만 사용한다면 신경쓰지 않아도 되지만 저장소를 다름 사람들과 공유한다면 이러한 파일들은 분리해서 관리해야 한다. 깃으로 관리하고 싶지 않은 파일과 폴더는 별도의 .gitignore 설정 파일 안에 나열한다.

 

.gitignore 파일

.gitignore 파일은 깃에서 관리하지 않는 파일들의 목록을 가지고 있으며 이 파일에 작성된 목록들은 깃이 추적하지 않는다. 또한, 로컬 저장소를 서버로 전송하거나 다른 사람과 공유할 때도 이를 분리하여 처리한다.

특별한 도구 없이 파일 이름만 .gitignore로 만든 후 텍스트 에디터를 이용하여 간단하게 작성할 수 있다. 깃에서 제외할 파일 목록을 직접 적어주거나 규칙을 사용하여 나열한다. 단, .gitignore 파일을 작성할 때는 저장소 폴더의 최상위 디렉토리에 두어야 한다.

 

.gitignore 파일 표기법

경로가 있다면 경로명도 같이 입력해야 한다.

# DB 접속 파일 제외
db/dbinfo.php

 

애스터리스크(*) 기호를 사용하여 패턴을 정의할 수 있으며 이러한 문자를 셸 글로빙이라고 한다. 글로빙 문자를 사용하여 패턴을 확장할 수 있다.

# 오브젝트 파일 모두 제외
*.obj

 

ignore 패턴을 작성할 때 반드시 추적 관리를 제외하는 파일만 작성하는 것은 아니다. 제외하지 않는 파일과 필요한 파일은 파일 이름 앞에 느낌표를 사용한다. 위에서 아래로 순차적으로 적용되므로 무시하는 패턴을 지정한 후, 특정 파일을 예외 처리한다.

# 모든 PHP 파일은 무시
*.php

# config.php는 추적(예외 처리)
!config.php

 

운영체제 별로 디렉토리를 표현하는 방법이 다르다. 깃에서 디렉토리를 표현할 때는 리눅스와 같이 슬래시(/) 기호를 사용한다. 깃은 glob 패턴을 지원하기 때문에 정규 표현식을 응용하여 작성 규칙을 넣을 수도 있다.

# 현재 디렉토리 안에 있는 파일 무시
/readme.txt

# 최상위 pub 디렉토리 안의 모든 것을 무시
/pub/

# 모든 위치의 pub/ 폴더 무시
pub/

# 어디에 있든 모든 pub/ 폴더를 무시
**/pub/

# doc 디렉토리 아래의 모든 .txt 파일 무시
# *는 현재 디렉토리에서만 동작하지만, **를 쓰면 모든 서브 디렉토리까지 포함
doc/**/*.txt