.gitignore 란?
git을 사용하면서 우리는 용량이 큰 파일이나 업로드해서는 안 되는 key파일 등등을 무시하고 소스코드를 업로드할 수 있도록 선언할 수 있습니다.
이는 .gitignore 라는 파일을 이용하면 되는데요, 단순하게 .gitignore 라는 파일을 작성하고 일련의 규칙에 따라 제외할 파일들의 목록들을 .gitignore 파일에 작성해주면 됩니다.
위 사이트를 통해서 원하는 개발 플랫폼에 따라 .gitignore파일을 쉽게 만들고 적용할 수 있습니다.
.gitignore 문법
.gitignore 를 제대로 사용하기 위해 문법을 한번 살펴보도록 하겠습니다.
.gitignore 파일은 Glob 패턴에 따라 작성이 되는데요, (glob 패턴 => https://www.daleseo.com/glob-patterns/)
Glob 패턴은 와일드 카드 문자를 사용하여 일정한 패턴을 가진 파일 이름을 지정하기 위한 패턴이며, 정규표현식과 유사한 문법들이 많기 때문에 이해하는데 크게 어렵지는 않습니다.
# 확장자가 .js 인 파일은 무시
*.js
# .js 파일들은 모두 무시되지만, test.js만은 무시하지 않음
!test.js
# 현재 디렉토리에 있는 /test.js파일은 무시되지만,
# subDir/test.js 같이 특정 디렉토리 하위에 있는 test.js는 무시되지 않음
/test.js
# node_modules/ 디렉토리에 있는 모든 파일을 무시
node_modules/
# src/ 하위의 .js파일만 무시
src/*.js
# src/ 하위에 존재하는 모든 디렉토리의 .txt 파일을 무시
src/**/*.txt
# 현재 디렉토리와 그 하위 디렉토리 내에 존재하는 모든 .js 파일을 무시
/**/*.js
# 현재 디렉토리 내에 존재하는 모든 .js .ts 파일 무시
/*.{js, ts}
# 현재 디렉토리 내에 있는 ex1.js ex2.js ex3.js 파일 무시
/ex[1-3].js
.gitignore 문법 중 난해했던 부분
* 패턴과 ** 패턴의 차이
* 는 현재 경로(/) 안에서 문자열 비교를 위해 사용됩니다.
ex) /bbb/*.js 는 /bbb 폴더 안에 있는 모든 js 파일과 매칭됩니다.
**는 디렉토리 경로 상에서 전체 경로를 표현하기 위해 사용됩니다.
ex) /test/** 라고 하면 /test 아래에 있는 모든 것들을 의미합니다.
ex) /test/**/foo/ 라고 하면 /test 하위의 여러 디렉토리를 거쳐 발견된 foo 디렉토리에 매칭됩니다.
(test/foo , /test/a/foo, /test/test/foo 등등)
'!' 패턴을 이용하여 .gitignore로 무시된 파일을 다시 include 할 때 연산자가 동작하지 않는 문제
보통 폴더에 있는 특정 파일을 제외하고 모두 git에서 무시되도록 하기 위해 '/' 와'!' 를 이용하여 경로를 추가한 뒤 (/) 예외를 처리(!) 하도록 .gitignore 를 작성하게 됩니다.
하지만 아래처럼 .gitignore 파일을 작성하면 올바르게 '!' 패턴이 적용되지 않습니다.
/test/
!/test/a.txt
!/test/b.txt
ex) a.txt, b.txt 는 여전히 무시됩니다. 즉 '!' 패턴이 적용되지 않습니다.
이를 해결하기 위해서는 '/' 를 이용하는 것이 아닌 '**' 를 이용하여 .gitignore 파일을 작성하여야 올바르게 '!' 패턴이 적용됩니다.
/test/**
!/test/a.txt
!/test/b.txt
ex) a.txt, b.txt 는 .gitignore로 부터 무시되지 않습니다.
마무리
오늘은 .gitignore 에 대해서 한번 정리를 해보았는데요, 발단은 '!' 패턴이 계속 동작하지 않아서 왜 안되는지 찾다가 이참에 .gitignore에 대해서도 조금 디테일하게 정리를 해보자 하게되어 포스팅까지 남기게 되었습니다.
앞으로도 git 관련한 포스팅을 꾸준히 업로드할 예정입니다.
감사합니다.
참고
.gitignore 파일 다루기 - https://kyu9341.github.io/Git/2020/08/23/git_gitignore/
.gitignore 문법 및 규칙 정리 - https://sh-hyun.tistory.com/22
.gitignore로 무시된 디렉토리 안의 특정 파일만 추가하는 방법 - https://hyeonseok.com/blog/797
'개발 도구 및 Git 사용법 > git (협업 툴) 사용법 정리' 카테고리의 다른 글
Github : SSH 키 등록을 통해 여러개의 깃헙 저장소 등록하여 관리하기 (0) | 2024.02.21 |
---|---|
GIT : 태그 추가 및 삭제 명령어 간단 정리 (0) | 2023.08.15 |
Git : github 개인 엑세스 토큰 발급 / Git Crediential을 이용하여 원격저장소에 처음 한번만 로그인하도록 계정정보 캐싱 (0) | 2022.04.11 |
Git: stash list의 각 stash 이름 바꾸기 (rename) (0) | 2022.02.27 |
GIT : github에 100MB 이상 파일 올리기 (LFS) (0) | 2021.04.18 |