[Git] .gitignore 파일 만들기 생성 적용 사용 방법

.gitignore 파일이란? 🧐

.gitignore 파일은 이름에서도 유추할 수 있듯이 git 원격 저장소에서 관리하지 않았으면 하는 파일들을 지정해두는 파일입니다. IDEA 관련 파일, gradle 관련 파일, 또는 공유되면 안되는 api 키가 들어있는 .env 파일이 그 예가 될 수 있습니다.

.gitignore 파일은 원격 저장소(repository) 최상위(root) 디렉토리에 존재하며, 이 파일 안에 지정된 파일들은 Staging Area에 올라가지 않기 때문에 git 으로 tracking 되지 않습니다. (git status를 했을때 보이지 않는다.)

정리하면,

  • 로컬 환경 정보나 빌드 정보 등 원격 저장소에서 무시되어야 할 파일들을 지정해서 실수로 저장하지 않도록 해주는 파일
  • 지정된 파일들에 대하여 git track 못하게 설정하는 역할

.gitignore 생성 방법 📂

.git 폴더가 있는 원격 저장소 최상위 디렉토리에 생성하면 되는데, 비주얼 스튜디오 코드 등 에디터를 사용하여 파일명을 .gitignore 로 정의하고 작성해주면 됩니다.

문법 (표준 Glob 패턴)

.gitignore 파일은 glob 패턴에 따라 작성해야 합니다. 정규 표현식과 유사한 부분이 있으며 아래 테이블에서 볼 수 있는 와일드 카드 문자(패턴)를 사용하여 git 에서 제외할 파일들을 지정합니다.

패턴의미
*“/” 를 제외한 길이 0 이상의 모든 문자열
**“/” 를 포함한 길이 0 이상의 모든 문자열
?“/” 를 제외한 하나의 아무 문자 (빈 문자 x)
[abc][ ] 안에 있는 각각의 문자 (a 또는 b 또는 c 중 하나)
{a,b,c}{ } 안에 있는 , 로 구분된 각각의 문자열
[^abc][ ] 안에 있는 모든 각각의 문자들을 제외한 문자들
[a-z][ ] 안에서 “-” 사이에 있는 첫 문자와 마지막 문자 범위에 있는 모든 문자 (a-z, A-Z, 0-9 등)
/부터 시작하는 경로의 하위 디렉토리에 적용 x
!부터 시작하는 것은 .gitignore에서 제외되며, git에서 tracking 된다.
#주석처리
  • 예시
# 확장자가 .class인 파일들은 모두 제외됩니다. 
*.class

# "*.class"를 통해 제외되는 .class 파일들 중 "lib.class"만 제외되지 않습니다.  
!lib.class

# "temp-"로 시작하는 모든 .json 파일들은 제외됩니다.
temp-*.json

# 현재 디렉토리에 있는 build.log 파일은 제외되지만, 그 아래에 있는 하위 디렉토리들은 제외되지 않습니다.
/build.log

# 폴더 뒤에 "/" 가 있으면, 해당 폴더 안에 있는 모든 파일들은 제외됩니다.
temp/

# src/ 하위의 .txt 파일만 제외됩니다.
src/*.txt

# src/ 하위에 존재하는 모든 디렉토리의 .txt 파일은 제외됩니다.
src/**/*.txt

# 현재 디렉토리 내에 존재하는 모든 .js .ts 파일들이 제외됩니다.
/*.{js,ts}

# 현재 디렉토리 내에 있는 ex1.js ex2.js ex3.js 파일들이 제외됩니다.
/ex[1-3].js

.gitignore 적용 방법

.gitignore 파일을 생성했어도 이미 원격 저장소에서 버전관리를 하고 있는 파일들은 .gitignore에서 지정해도 원래대로 계속해서 해당 파일들을 tracking 하기 때문에 수동으로 버전관리에서 제외시켜주어야 합니다.

# 현재 원격 저장소에 있는 cache를 모두 삭제합니다.
git rm -r --cached .

# .gitignore에서 지정한 파일들을 제외하고 다시 모든 파일들을 tracking 하도록 합니다.
git add .

# 커밋(commit)해줍니다.
git commit -m "reapply .gitignore"

# 푸쉬(push)해줍니다.
git push origin {브랜치 이름}

.gitignore 파일 자동 생성 사이트

정말 간편하게 https://www.gitignore.io/ 라는 사이트에서 원하는 .gitignore 파일을 생성할 수 있습니다.

아래처럼 현재 개발환경에 맞는 키워드들을 넣고,

.gitignore 자동 생성 사이트 사용 예시

생성을 누르면 이렇게 자동생성해줍니다.

# Created by https://www.toptal.com/developers/gitignore/api/java,intellij,macos
# Edit at https://www.toptal.com/developers/gitignore?templates=java,intellij,macos

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

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

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

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

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

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

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

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

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

# Sonarlint plugin
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/

# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml

# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/

# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/$CACHE_FILE$

# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml

# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml

### Java ###
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

### macOS ###
# General
.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

### macOS Patch ###
# iCloud generated files
*.icloud

# End of https://www.toptal.com/developers/gitignore/api/java,intellij,macos

답글 남기기