Git 교과서

코드 이력, 하나도 놓치지 마라!

버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!

Yes24 교보문고 알라딘 인터파크 길벗

파일 관리 목록에서 제외: .gitignore


깃은 tracked 상태인 모든 것을 추적 관리합니다. 파일뿐만 아니라 서브 폴더와 그 안의 파일들도 포함합니다. 즉, 디렉터리 전체가 모두 관리 대상입니다. 하지만 프로젝트를 하다 보면 모든 파일을 추적하지 않아야 하는 경우도 있습니다.

실제 작업하다 보면, 워킹 디렉터리에 불필요한 파일이 생성되거나 보안에 민감한 파일들이 있을 수 있습니다. 로컬 저장소를 혼자만 사용한다면 이러한 파일들은 신경 쓰지 않아도 됩니다. 하지만 자신의 저장소를 다른 사람들과 공유한다면 이 파일들은 분리해서 관리해야 합니다.

깃으로 관리하고 싶지 않은 파일과 폴더는 별도의 .gitignore 설정 파일 안에 나열해서 적어 줍니다.


.gitignore 파일


.gitignore는 git과 ignore(무시하다)의 합성어입니다. 워킹 디렉터리 안에 .gitignore 파일을 생성합니다. 이 파일은 앞에 점(.)이 있어 숨겨진 파일로 관리됩니다.

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

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


.gitignore 파일 표기법


파일에서 #으로 시작하는 줄은 주석으로 처리합니다. # 없이 완전한 파일 이름을 적어 주면 그 파일은 깃의 관리 대상에서 제외됩니다. 이때 경로가 있다면 경로명도 같이 입력해야 합니다.

# DB 접속 파일을 제외함
dbinfo.php

애스터리스크(*) 기호를 사용하여 패턴을 정의할 수 있습니다. * 기호는 모든 문자열을 대체할 수 있습니다. 이러한 문자를 셸 글로빙(globbing)이라고 합니다. 글로빙 문자를 사용하여 패턴을 확장합니다.

# 오브젝트 파일은 제외함
*.obj

ignore 패턴을 작성할 때 반드시 추적 관리를 제외하는 파일만 작성하는 것은 아닙니다. 제외하지 않는 파일과 필요한 파일은 파일 이름 앞에 느낌표(!)를 사용합니다. 느낌표는 부정을 의미하는 not과 같습니다.

# 환경 설정 파일은 제외하면 안 됨
!config.php

운영 체제별로 디렉터리를 표현하는 방법이 다릅니다. 깃에서 디렉터리를 표현할 때는 리눅스와 같이 슬래시(/) 기호를 사용합니다.

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

# /pub/ 디렉터리 안의 모든 것을 무시
/pub/

# doc 디렉터리 아래의 모든 .txt 파일 무시
doc/**/*.txt

깃은 glob 패턴을 지원하기 때문에 정규 표현식을 응용하여 작성 규칙을 넣을 수도 있습니다.