Home [Git] 특정 파일 혹은 폴더 무시하기 (.gitignore)
Post
취소

[Git] 특정 파일 혹은 폴더 무시하기 (.gitignore)

어떤 파일은 Git이 관리할 필요가 없다. 보통 로그 파일이나 빌드 시스템이 자동으로 생성한 파일이 그렇다. 그런 파일을 무시하려면 .gitignore 파일을 생성하고 그 안에 무시할 파일 패턴을 입력하면 된다. 아래는 .gitignore 파일의 예이다.

1
2
3
$ cat .gitignore
*.[oa]
*~

첫 번째 라인은 확장자가 “.o”나 “.a”인 파일을 Git이 무시하라는 것이고 둘째 라인은 ~로 끝나는 모든 파일을 무시하라는 것이다. “.o”와 “.a”는 각각 빌드 시스템이 만들어내는 오브젝트와 아카이브 파일이고 ~로 끝나는 파일은 Emacs나 vi 같은 텍스트 편집기가 임시로 만들어내는 파일이다. 또 log, tmp, pid 같은 디렉터리나, 자동으로 생성하는 문서 같은 것들도 추가할 수 있다. .gitignore 파일은 보통 처음에 만들어 두는 것이 편리하다. 그래서 Git 저장소에 커밋하고 싶지 않은 파일을 실수로 커밋하는 일을 방지할 수 있다.

.gitignore 파일에 입력하는 패턴 규칙

  • 아무것도 없는 라인이나, #으로 시작하는 라인은 무시한다.
  • 표준 Glob 패턴을 사용한다.
  • /로 시작하면 하위 디렉터리에 적용되지 않는다(recursivity).
  • 디렉터리는 끝에 슬래시 /를 사용하는 것으로 표현한다.
  • !로 시작하는 패턴의 파일은 무시하지 않는다.

Glob 패턴은 정규표현식을 단순하게 만든 것으로 생각하면 되고 보통 Shell에서 많이 사용한다.

  • *: 문자가 하나도 없거나 하나 이상을 의미
  • [abc]: 는 중괄호 안에 있는 문자 중 하나를 의미 (이 경우 a 혹은 b 혹은 c)
  • ?: 문자 하나를 의미
  • [0-9]: 캐릭터 사이에 있는 문자 하나를 의미
  • * 두 개: 디렉터리 안의 디렉터리까지 의미 ex) a/**/z 패턴은 a/z, a/b/z, a/b/c/z 와 같이 a와 z 사이의 모든 디렉터리 및 파일을 의미함

아래는 .gitignore 파일의 예이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 확장자가 .a인 파일 무시
*.a

# 윗 라인에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않음
!lib.a

# 현재 디렉터리에 있는 TODO 파일은 무시하고 subdir/TODO 처럼
# 하위 디렉터리에 있는 파일은 무시하지 않음
/TODO

# build/ 디렉터리에 있는 모든 파일 무시
build/

# doc/notes.txt 파일은 무시하고 doc/server/arch.txt 파일은 무시하지 않음
doc/*.txt

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




References


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

[Git] 수정하고 저장소에 저장하기

[Git] Staged와 Unstaged 상태의 변경 내용 보기