SW/Git

Git : .gitignore : 파일과 디렉토리 무시 방법, 예제, 명령어

얇은생각 2022. 3. 30. 07:30
반응형

Git을 사용하는 프로젝트에서 작업할 때 특정 파일 또는 디렉터리를 원격 리포지토리에 푸시하지 못하도록 제외하는 경우가 많습니다. 여기서 .gitignore 파일이 유용합니다.

.gitignore 파일은 추적되지 않은 파일 Git가 무시해야 하는 파일을 지정합니다.

 

 

Git : .gitignore : 파일과 디렉토리 무시 방법, 예제, 명령어

 

 

무시해야 할 파일

무시되는 파일은 일반적으로 플랫폼별 파일이거나 빌드 시스템에서 자동으로 생성된 파일입니다. 몇 가지 일반적인 예는 다음과 같습니다.

 - 로그, 잠금, 캐시 또는 임시 파일과 같은 런타임 파일입니다.

- 암호 또는 API 키와 같은 중요한 정보가 있는 파일입니다.

- .class 또는 .o와 같은 컴파일된 코드입니다.

- /vendor 또는 /node_modules 와 같은 종속성 디렉토리입니다.

- /public, /out 또는 /dist와 같은 디렉토리를 빌드합니다.

- 시스템 파일은 다음과 같습니다.DS_Store 또는 Thums.db입니다.

- IDE 또는 텍스트 편집기 구성 파일입니다.

 

 

 

.gitignore 패턴

.gitignore는 각 줄에 무시할 파일 또는 디렉터리의 패턴이 포함된 일반 텍스트 파일입니다.

전역 패턴을 사용하여 파일 이름과 와일드카드 문자를 일치시킵니다. 와일드카드 패턴이 포함된 파일 또는 디렉토리가 있는 경우 단일 백슬래시(\)를 사용하여 문자를 이스케이프할 수 있습니다.

 

 

 

주석

해시 표시(#)로 시작하는 줄은 주석이며 무시됩니다. 빈 줄을 사용하여 파일의 가독성을 향상시키고 관련 패턴 줄을 그룹화할 수 있습니다.

 

 

 

슬래시(Slash)

슬래시 기호(/)는 디렉토리 구분 기호를 나타냅니다. 패턴의 시작 부분에 있는 슬래시는 .gitignore가 있는 디렉터리를 기준으로 합니다.

패턴이 슬래시로 시작하면 리포지토리 루트에 있는 파일 및 디렉토리와 일치합니다.

패턴이 슬래시로 시작하지 않으면 디렉토리 또는 하위 디렉토리에 있는 파일 및 디렉토리와 일치합니다.

패턴이 슬래시로 끝나는 경우 디렉토리만 일치합니다. 디렉터리가 무시되면 해당 파일과 하위 디렉터리도 모두 무시됩니다.

 

 

 

리터럴 파일 이름

가장 간단한 패턴은 특수 문자가 없는 리터럴 파일 이름입니다.

Pattern	    | Example matches
/access.log	| access.log
access.log	| access.log, logs/access.log, var/logs/access.log
build/	    | build

 

 

 

와일드카드 기호

* - 별표 기호가 0자 이상과 일치합니다.

Pattern	| Example matches
*.log	| error.log, logs/debug.log, build/logs/error.log

 

 

** - 인접한 두 별표 기호가 모든 파일 또는 0개 이상의 디렉토리와 일치합니다. 슬래시(/) 뒤에 오면 디렉토리만 일치합니다.

Pattern	   | Example matches
logs/**	   | Matches anything inside the logs directory.
**/build   | var/build, pub/build, build
foo/**/bar | foo/bar, foo/a/bar, foo/a/b/c/bar

 

 

? - 물음표가 단일 문자와 일치합니다.

Pattern	    | Example matches
access?.log | access0.log, access1.log, accessA.log
foo??	    | fooab, foo23, foo0s

 

 

 

Square brackets

[...] - 대괄호 안에 포함된 문자와 일치합니다. 두 문자가 하이픈으로 구분되어 있으면 문자 범위를 나타냅니다. 범위에는 두 문자 사이에 있는 모든 문자가 포함됩니다. 범위는 영문자 또는 숫자일 수 있습니다.

[ 뒤에 오는 첫 번째 문자가 느낌표(!)인 경우 패턴은 지정된 집합의 문자를 제외한 모든 문자와 일치합니다.

Pattern           | Example matches
*.[oa]            | file.o, file.a
*.[!oa]	          | file.s, file.1, file.0
access.[0-2].log  | access.0.log, access.1.log, access.2.log
file.[a-c].out    | file.a.out, file.b.out, file.c.out
file.[a-cx-z].out | file.a.out, file.b.out, file.c.out, file.x.out, file.y.out, file.z.out
access.[!0-2].log | access.3.log, access.4.log, access.Q.log

 

 

 

패턴 부정

느낌표(!)로 시작하는 패턴은 이전 패턴에서 무시되는 모든 파일을 부정(재포함)합니다. 이 규칙의 예외는 상위 디렉터리가 제외된 경우 파일을 다시 포함시키는 것입니다.

Pattern	   |Example matches
*.log      | error.log or logs/error.log will not be ignored
!error.log |

 

 

 

.gitignore 예제

다음은 .gitignore 파일이 어떤 모습인지 보여 주는 예입니다.

# Ignore the node_modules directory
node_modules/

# Ignore Logs
logs
*.log

# Ignore the build directory
/dist

# The file containing environment variables 
.env

# Ignore IDE specific files
.idea/
.vscode/
*.sw*

 

 

 

로컬 .gitignore

로컬 .gitignore 파일은 일반적으로 리포지토리의 루트 디렉터리에 배치됩니다. 그러나 리포지토리의 서로 다른 하위 디렉터리에 여러 .gitignore 파일을 생성할 수 있습니다. .gitignore 파일의 패턴은 파일이 있는 디렉터리와 상대적으로 일치합니다.

하위 수준 디렉터리(하위 디렉터리)에 있는 파일에 정의된 패턴이 상위 수준 디렉터리보다 우선합니다.

로컬 .gitignore 파일은 다른 개발자와 공유되며 리포지토리의 다른 모든 사용자에게 유용한 패턴을 포함해야 합니다.

 

 

 

개인 무시 규칙

로컬 리포지토리에만 해당되고 다른 리포지토리에 배포해서는 안 되는 패턴은 .git/info/제외 파일에서 설정해야 합니다.

예를 들어 이 파일을 사용하여 개인 프로젝트 도구에서 생성된 파일을 무시할 수 있습니다.

 

 

 

전역 .gitignore

Git를 사용하면 로컬 시스템의 모든 Git 저장소에 대한 무시 규칙을 정의할 수 있는 전역 .gitignore 파일을 만들 수 있습니다.

파일 이름은 원하는 대로 지정할 수 있으며 모든 위치에 저장할 수 있습니다. 이 파일을 보관하는 가장 일반적인 위치는 홈 디렉토리입니다. 파일을 수동으로 만들고 사용할 Git을 구성해야 합니다.

예를 들어 ~/.gitignore_global을 글로벌 Git 무시 파일로 설정하려면 다음을 수행합니다.

 

 

파일을 만듭니다.

touch ~/.gitignore_global

 

 

Git 구성에 파일을 추가합니다.

git config --global core.excludesfile ~/.gitignore_global

 

 

 

텍스트 편집기로 파일을 열고 규칙을 추가합니다.

글로벌 규칙은 특히 중요한 정보가 있는 파일이나 컴파일된 실행 파일과 같이 커밋하지 않으려는 특정 파일을 무시하는 데 유용합니다.

 

 

 

이전에 커밋된 파일을 무시

작업 복사본의 파일을 추적하거나 추적 해제할 수 있습니다.

이전에 커밋된 파일을 무시하려면 인덱스에서 파일을 분할하여 제거한 다음 .gitignore에서 파일에 대한 규칙을 추가해야 합니다.

git rm --cached filename

 

 

--cached 옵션은 작업 트리에서 파일을 삭제하지 말고 색인에서만 삭제하라는 메시지를 표시합니다.

디렉토리를 재귀적으로 제거하려면 -r 옵션을 사용하십시오.

git rm --cached filename

 

 

인덱스 및 로컬 파일 시스템에서 파일을 제거하려면 --cached 옵션을 생략합니다.

파일을 반복적으로 삭제할 경우 "드리런"을 수행하고 삭제할 파일을 보여주는 -n 옵션을 사용합니다.

git rm -r -n directory

 

 

 

.gitignore 파일을 디버깅

특히 여러 .gitignore 파일이나 복잡한 패턴을 사용하는 경우 특정 파일이 무시되는 이유를 확인하기 어려울 수 있습니다. 여기서 일치 패턴에 대한 세부 정보를 표시하도록 Git에 지시하는 -v 옵션이 있는 git 체크 무시 명령이 유용합니다. 명령을 사용할 수 있습니다.

예를 들어 ww/yarn.lock 파일이 무시되는 이유를 확인하려면 다음을 실행합니다.

git check-ignore -v www/yarn.lock

# www/.gitignore:31:/yarn.lock	www/yarn.lock

 

 

출력에는 Gitignore 파일의 경로, 일치하는 줄의 수 및 실제 패턴이 표시됩니다.

명령어는 또한 둘 이상의 파일 이름을 인수로 받아들이며 파일이 작업 트리에 존재할 필요는 없습니다.

 

 

 

무시된 모든 파일을 표시

--무시된 옵션이 있는 git status 명령은 무시된 모든 파일의 목록을 표시합니다.

git status --ignored

 

 

 

.gitignore 파일을 사용하면 리포지토리에 체크인되지 않도록 파일을 제외할 수 있습니다. 이 파일에는 무시해야 할 파일 및 디렉터리를 설명하는 글로벌빙 패턴이 포함되어 있습니다.

gitignore.io은 운영 체제, 프로그래밍 언어 또는 IDE에 대한 .gitignore 파일을 생성할 수 있는 온라인 서비스입니다.

반응형