...
.gitignore 파일이란?
프로젝트에 원하지 않는 백업 파일이나 로그파일 혹은 컴파일 된 파일들을 Git에서 제외시킬 수 있는 설정 파일을 말한다.
예를들어 깃허브에 커밋할때 필요하지 않는 파일은 업뎃 시키지 않는 기능이다.
파일을 제외시킴으로서 업로드 용량을 줄일수도 있고, 소스 보안도 챙길 수 있어 일석이죠 이다.
.gitignore 자동생성 사이트
검색창에 운영체제, 개발환경(IDE), 프로그래밍 언어를 검색하면 .gitignore 파일을 자동으로 생성해 준다.
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
.env.production
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### Node Patch ###
# Serverless Webpack directories
.webpack/
# Optional stylelint cache
.stylelintcache
# SvelteKit build / generate output
.svelte-kit
# End of https://www.toptal.com/developers/gitignore/api/node
깃허브에 생략되어야할 파일들이 운영체제, IDE, 프로그래밍언어별로 생성이 되고 그대로 .gitignore파일에 복붙해준다. 그 다음, git bash로 명령어를 입력하여 적용한다.
# 스테이징 된 것들 일단 모두 되돌리기. 왜냐하면 add된 상태에서 .gitignore가 안통하기 때문
$ git rm -r --cached .
$ git add .
$ git commit -m "Apply .gitignore"
ignore 처리된 파일 확인
$ git status --ignored
.gitignore 작성 규칙
어떤 파일들을 커밋 대상에서 제외시켜야 할까?
- IED tool과 관련된 설정파일
- 언어의 빌드 결과물, 로그, 패키지 관련 파일
- 그 외 프로젝트에서 사용자가 제외하기 원하는 파일 등등...
프로젝트에서 어떤걸 커밋 대상에서 제외 시켜야 할지 궁금하다면 아래 사이트를 참고하자. 만일 노드에서 무엇을 제외해야 할지 궁금하면, Node.gitignore 파일을 살펴보면 된다.
.gitignore 파일 규칙
표현 | 의미 |
#, 빈라인 | #은 주석을 의미하며, 빈라인은 아무런 영향을 주지 않습니다. |
*.a | 확장자가 .a 인 모든 파일을 무시합니다. |
folder_name/ | 해당 폴더의 모든 파일을 무시합니다. |
folder_name/*.a | 해당 폴더의 확장자가 .a 인 모든 파일을 무시합니다. |
folder_name/**/*.a | 해당 폴더 포함한 하위 모든 폴더에서 확장자가 .a 인 모든 파일을 무시합니다. |
/*.a | 현재 폴더의 확장자가 .a 인 모든파일을 무시합니다. |
.gitignore 파일 예제
# 모든 확장자 .a 파일을 무시
*.a
# 무시하는 모든 확장자 .a 파일들 중에서 lib.a 파일은 무시하지 않음
!lib.a
# Project/
# ㄴ.gitignore
# ㄴA/
# ㄴa.txt
# ㄴTODO/
# ㄴtt.txt
# ㄴTODO/
# ㄴt.txt
# 현재 폴더 중에서 TODO 폴더에 있는 모든 파일을 무시
# (즉, t.txt 파일만 무시되고 tt.txt 파일은 무시되지 않음)
/TODO
# 프로젝트 전체 폴더 중 TODO라는 폴더명을 사용하는 TODO 폴더의 하위 파일은 모두 무시
# (즉, t.txt 파일과 tt.txt 파일 모두 무시됨)
TODO/
# Project/
# ㄴ.gitignore
# ㄴdoc/
# ㄴd.txt
# ㄴp.pdf
# ㄴserver/
# ㄴss.txt
# ㄴpp.pdf
# 현재 폴더 중에서 doc 폴더 바로 밑에 있는 .txt 확장자 파일만 모두 무시
# 단, doc/server/ss.txt 와 같은 형식에서는 .txt 확장자 파일이 무시되지 않음
doc/*.txt
# 현재 폴더 중에서 doc 폴더 하위에 있는 .pdf 확장자 파일은
# doc 폴더 하위 어떤 폴더에 들어 있더라도 모두 무시
# (즉, p.pdf 파일과 pp.pdf 파일 모두 무시됨)
doc/**/*.pdf
.gitignore 파일 이외의 방법들
.gitignore 파일은 저장소 내에 커밋하여 포함시키는 것을 기본으로 하는 방법이다.
만약 특정 파일들에 대한 규칙을 저장소에 커밋 없이 ignore 처리하기를 원한다면, 아래와 같이 몇가지 선택지가 존재한다:
- .git/info/exclude 파일을 수정한다 (.gitignore 파일에서와 동일한 규칙 문법을 사용한다).
기술한 규칙은 해당 저장소 내에 전역으로 적용될 것이다. - 로컬의 모든 저장소들에 대해 동일한 ignore 처리를 하고 싶다면 글로벌 gitignore 파일 설정을 해두도록 한다
글로벌 gitignore 파일은 git config --global core.excludesfile <filepath> 형식으로 설정
추가적으로, Git 이 관리중인 (tracked) 파일들에 대한 로컬 변경사항들을 다음과 같은 방법으로 Git 의 글로벌 설정을 변경하지 않고도 ignore 처리할 수 있다:
- git update-index --skip-worktree [<file>...]
: 로컬에만 적용되어야 할 설정파일 수정사항 등이 커밋되지 않도록 설정한다 - git update-index --assume-unchanged [<file>...]
: SDK등과 같이 수정되어서는 안되는 파일들에 대해 변경 검사를 하지 않도록 설정한다
ignore 처리된 파일들 정리하기
git clean -X 명령어를 이용하면 ignore 처리된 파일들을 제거할 수 있다:
#현재 작업 디렉토리에 존재하는 ignore 처리된 파일들의 목록을 표시한다
$ git clean -Xn
#위 명령어에 의해 나타난 파일들을 삭제한다
$ git clean -Xf
📝 Note:-X
(대문자) 옵션은 ignore 처리된 파일들만 정리한다.
ignore 처리된 파일뿐만 아니라 Git에서 관리하지 않는 (untracked) 파일까지 제거하려면
-x
(소문자) 옵션을 사용한다.
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.