gitignore

개요

Git으로 프로젝트를 관리할때 무시할 파일들이 있다. 대표적으로 node_modules 디렉토리에 있는 npm 모듈이라던지, .idea 같은 jet brains 사의 개발툴 설정 같은 파일, 디렉토리는 git에 올릴 필요가 없다. 그런 파일들은 git에 올릴때 무시할 수 있는 설정이 있다. 바로 gitignore이다.

.gitignore의 기능

gitignore의 기능은 짧게 말하자면 어떤 파일을 git에서 무시할지 규칙을 설정하는 파일이다.

.gitignore 규칙

.gitignore에 입력하는 패턴은 아래 규칙을 따른다

  1. 아무것도 없는 라인이나, # 로 시작하는 라인은 무시한다(주석)
  2. 표준 Glob 패턴을 사용한다. (Glob은 정규표현식을 단순하게 만든 것)
  3. 슬래시(/)로 시작하면 하위디렉토리에는 적용되지 않는다.
  4. 디렉토리는 슬래시를 끝에 사용하는 것으로 표현한다
  5. 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다.

.gitignore 예제

# 확장자가 .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

유용한 서비스

사실 이 부분이 가장 중요하다. 반복적인 작업은 전 세계인이 똑같이 느끼고 있다. 처음부터 무언가를 만들어 보는 경험도 중요하지만, 우리는 생산성을 위해서는 누군가 잘 만들어 놓은것을 알맞게 사용하는 것도 하나의 실력이 되는 시대에 살고있다. 따라서 우리는 유용한 서비스를 알아보겠다. https://www.gitignore.io/
들어가보면 screenshot1 깔끔한 페이지를 볼 수 있다.

대체로 내가 설정하는 옵션은 다음과 같다. screenshot2

위와 같이 설정하고 generate 버튼을 누르면

# Created by https://www.gitignore.io/api/macos,webstorm,node

### macOS ###
*.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk


### WebStorm ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff:
.idea/workspace.xml
.idea/tasks.xml

# Sensitive or high-churn files:
.idea/dataSources/
.idea/dataSources.ids
.idea/dataSources.xml
.idea/dataSources.local.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml

# Gradle:
.idea/gradle.xml
.idea/libraries

# Mongo Explorer plugin:
.idea/mongoSettings.xml

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

### WebStorm Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr


### Node ###
# Logs
logs
*.log
npm-debug.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity


# End of https://www.gitignore.io/api/macos,webstorm,node

다음과 같은 text 파일을 얻을 수 있을 수 있다. 프로젝트 폴더에 .gitignore 라는 파일을 만들고 위의 내용을 붙여넣은 다음 git에 커밋하면 완성된 .gitignore를 얻을 수 있다.

무척 편하지 않은가! 위의 파일을 자신의 입맛대로 수정하면 된다.


Philographer
Written by@Philographer
Fail Fast, Learn Faster

GitHublinkedInFacebook