[git] .gitignore 문법 및 규칙 정리개발 공부/기타2022. 5. 23. 11:25
Table of Contents
이번에 졸업 프로젝트를 진행하며 프로젝트를 깃헙으로 관리하게 되었는데 의도치 않게 .idea 등 개인 프로젝트 설정 파일까지 모두 깃헙이 관리하는 파일로 설정되어 업로드 되는 일이 발생했다. 이런 경우 fetch, pull 과정에서 개인 프로젝트 설정이 날라가는 일이 발생할 수 있으니 수정해야한다고 멘토님께서 지적해주셨고 이와 관련한 pr도 올려주셨다.
멘토님께서 올려주신 pr에 포함된 .gitignore
파일을 확인하던 중 .gitignore
문법과 규칙에 대해 이해되지 않는 부분이 있어서 찾아보고 중요하다고 생각되는 것들을 정리했다.
.gitignore 문법
공백
→ no files#로 시작하는 line
→ 주석\
를 통해escape
할 수 있다.
!
→ 이전 패턴에 의해exclude
되었던 파일을 다시include
한다.- 상위 디렉토리가
exclude
된 경우 해당 파일은include
할 수 없다. - (
git
은excluded files
를 관리하지 않기 때문에!
가 영향을 주지 못한다.)
- 상위 디렉토리가
/
→ 디렉토리 간 구분자로 사용된다./
위치에 따른 규칙 존재bar
→ 디렉토리 위치에 관계 없이bar
이라는 디렉토리 하위의 파일 혹은 디렉토리를 무시/bar
→ 현재 디렉토리 (.gitignore
위치 기준) 에 위치한bar
하위의 파일 혹은 디렉토리를 무시bar/
→bar
은 디렉토리에만 매칭 (즉,bar
이라는 파일에는 매칭 X)bar
→bar
는 디렉토리거나 파일이름일 수 있다.
*
→/
를 제외한 모든 것에 매칭?
→/
를 제외한 한 글자에 매칭**
→ 디렉토리 사이의 전체 경로에 매칭- e.g.
/bar/**/foo/
라고 하면 현재 경로에서 bar 하위의 여러 디렉토리를(infinite depth) 거쳐 발견된 foo 디렉토리에 매칭된다. - e.g.
bar/**
라고 하면 bar 디렉토리 하위의 모든 것(infinite depth)에 매칭된다.
- e.g.
.gitignore 규칙
.gitignore
에 작성된 내용은 이미tracked
되고 있는 파일에는 영향을 주지 못한다.- 우선순위는 아래의 순서에 따른다.
1.command line
을 통해 입력된 패턴
2..gitignore
파일에 작성된 패턴
(하위 디렉토리에 작성된.gitignore
은 상위 디렉토리에 작성된.gitignore
의 내용을override
한다.)
3.$GIT_DIR/info/exclude
에 작성된 패턴
4. 깃 설정 변수인core.excludesFile
에 작성된 패턴 - 위 우선순위 레벨 중 한 레벨 내에서는 가장 마지막에 작성된 내용이 우선순위를 갖는다.
- 예를 들어 아래의 경우 모든 디렉토리의 bar.txt를 추적되지 않도록 exclude 하지만 현재 디렉토리의 bar.txt은 다시 include하게 된다.
# exclude bar.txt # include !/bar.txt
References
- https://git-scm.com/docs/gitignore
- my shell :)
@gmelon :: gmelon's greenhouse
백엔드 개발을 공부하고 있습니다.