파일 무시하기
어떤 파일은 Git이 자동으로 추가하거나 untracked 파일이라고 보여줄 필요가 없다. 보통 로그 파일이나 빌드 시스템이 자동으로 생성한 파일이 그렇다.
vim 파일의 임시파일인 .swp 파일도 저장소에 추가할 필요가 없으므로 해당 파일을 .gitignore 파일에 추가하면 .swp 파일은 저장소에서 사라진다.
.gitignore 파일에 입력하는 패턴은 아래 규칙을 따른다.
- 아무것도 없는 라인이나, #로 시작하는 라인은 무시한다.
- 슬래시(/)로 시작하면 하위 디렉토리에 적용되지 않는다.
- 디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다.
- 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다.
애스터리스트()는 문자가 하나도 없거나 하나 이상을 의미하고, [abc]는 중괄호 안에 있는 문자 중 하나를 의미한다. 물음표(?)는 문자 하나를 말하고, [0-9]처럼 중괄호 안의 (-)를 사용하면 그 캐릭터 사이에 있는 문자 하나를 말한다. (**)를 2개 사용하여 디렉토리안의 디렉토리까지 지정할 수 있다. a/**/z 패턴은 a/z, a/b/z, a/b/c/z 디렉토리에 사용할 수 있다.
다음은 .gitignore 파일의 예이다.
- .*.swp - vim이 생성한 임시파일인 .swp 파일은 무시한다.
- *.a - 확장자가 .a인 파일은 무시한다.
- !lib.a - 윗 줄에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않는다.
- /TODO - 루트 디렉토리에 있는 TODO 파일은 무시하고 subdir/TODO처럼 하위 디렉토리에 있는 파일은 무시하지 않는다.
- build/ - build/ 디렉토리에 있는 모든 파일은 무시한다.
- doc/*.txt - 'doc/notes.txt' 같은 파일은 무시하고 doc/server/arch.txt 같은 파일은 무시하지 않는다.
- doc/**/.pdf - doc 디렉토리 아래의 모든 .pdf 파일을 무시
하지만 자신의 컴퓨터에서만 특정 파일을 배제시키고자 한다면 .*.swp을 .git/info/exclude 파일에 추가하면 된다.