gitignore

gitignore

.gitignore 파일은 Git에서 특정 파일이나 폴더를 추적하지 않도록 설정하는 파일입니다. 프로젝트 디렉토리 내에서 .gitignore 파일을 사용하면, 불필요하거나 민감한 데이터가 Git 저장소에 포함되지 않도록 방지할 수 있습니다.

.gitignore의 주요 역할

  • 추적 제외: Git이 특정 파일 또는 폴더를 추적하지 않도록 설정합니다.
  • 불필요한 파일 방지: 빌드 결과물, 임시 파일, 개인 설정 파일 등 소스 코드 관리에 불필요한 파일을 제외합니다.
  • 보안 유지: API 키, 비밀번호와 같은 민감한 정보를 포함하는 파일을 저장소에 포함되지 않도록 보호합니다.
  • 협업 환경에서 일관성 유지

.gitignore 파일의 위치

루트 디렉토리

  • 프로젝트의 루트 디렉토리에 .gitignore 파일을 생성하면 프로젝트 전역에 적용됩니다.

하위 디렉토리

  • 특정 디렉토리에 .gitignore 파일을 생성하면 해당 디렉토리와 하위 항목에만 적용됩니다.

.gitignore의 기본 문법

.gitignore 파일은 간단한 규칙 기반의 텍스트 파일입니다. 주요 문법은 다음과 같습니다:

주석

# 이 줄은 주석입니다.

특정 파일 무시

example.txt
  • example.txt 파일을 무시합니다.

특정 폴더 무시

/bin/
  • bin/ 폴더 전체를 무시합니다.

특정 패턴 무시

*.log
  • .log 확장자를 가진 모든 파일을 무시합니다.

예외규칙

*.txt
!README.txt
  • .txt 파일은 모두 무시하지만, README.txt는 무시하지 않습니다.

디렉토리 내 하위 항목 모두 무시

/temp/*
  • temp/ 디렉토리 내 모든 항목을 무시합니다.

재귀적으로 특정 이름 무시

logs/
  • 프로젝트 내 모든 logs/ 폴더를 무시합니다.

.gitignore 파일 작성 팁

공식 .gitignore 템플릿 사용

  • GitHub에서 다양한 언어 및 프레임워크에 대한 .gitignore 템플릿을 제공합니다.

.gitignore로 무시되지 않는 경우

  • 이미 Git에서 추적 중인 파일은 .gitignore 설정이 적용되지 않습니다.
  • 이런 경우, 캐시를 초기화하여 추적을 제거해야 합니다:
git rm -r --cached .
git add .
git commit -m "Fix .gitignore"

Git에 올라간 민감한 파일 제거

  • 파일을 삭제하고 .gitignore에 추가한 뒤 푸시합니다:
git rm --cached sensitive_file.txt
git commit -m "Remove sensitive file"
git push origin master

.Net의 gitIgnore 설정

WPF 프로젝트를 위한 기본 .gitignore

# Build 결과물
bin/
obj/

# 사용자 환경 설정 파일
*.user
*.rsuser
*.suo
*.userosscache
*.sln.docstates

# Visual Studio의 임시 파일, 디버깅 정보
.vs/
.vscode/
.ipch/
*.log
*.tlog
*.vspscc
*.vssscc

# 패키지 관리자 결과물
packages/
*.nupkg
*.snupkg
project.lock.json
project.fragment.lock.json
artifacts/

# NuGet 설정
*.nuget.props
*.nuget.targets

# Rider 및 기타 JetBrains IDE 관련
.idea/
*.sln.iml
*.dotsettings.user
*.ReSharper
*.resharper-user

# 파일 시스템 캐시 및 OS 관련
[Dd]esktop.ini
[Tt]humbs.db
*.DS_Store

# 텍스트 에디터 임시 파일
*.swp
*.bak
*.tmp

# Publish 결과물
publish/
wwwroot/

# 스타일 및 분석기
.stylecop
.ruleset
*.editorconfig
*.codeAnalysis

# WPF 프로젝트 고유의 무시 파일
*.g.i.cs   # XAML에서 생성된 중간 코드 파일
*.g.cs     # XAML에서 생성된 코드 파일
*.csproj.user

# 확장 도구 결과물
*.ideconfig
*.tlog

# 기타
*.ilk
*.pdb
*.obj
*.exe
*.dll
*.cache
*.out

bin/obj/

  • 빌드된 바이너리 및 중간 파일을 제외합니다.
  • 이들은 빌드 시 생성되며, 소스 코드 관리에 불필요합니다.

.vs/.vscode/

  • Visual Studio와 Visual Studio Code에서 생성하는 사용자 설정 파일과 캐시 폴더를 제외합니다.

NuGet 관련 파일

  • packages/ 폴더와 NuGet 관련 잠금 파일(*.nupkg, project.lock.json)을 제외합니다.
  • 패키지 복원을 통해 필요할 때 자동으로 다운로드됩니다.

XAML에서 생성된 파일

  • WPF 프로젝트에서 XAML 파일로부터 자동 생성된 코드 파일(*.g.i.cs, *.g.cs)은 제외합니다.
  • 빌드 프로세스에서 생성되므로 소스 관리에 불필요합니다.

사용자 환경 설정

  • 개발자마다 다른 환경 설정 파일(*.user, *.suo)을 제외합니다.

Publish 결과물

  • publish/와 같은 배포 폴더는 로컬에서 생성된 배포 결과물이므로 포함하지 않습니다.

추가 구성

프로젝트 특성에 따라 필요에 따라 항목을 추가할 수 있습니다.

  • database 또는 configuration 파일이 포함될 경우:
*.config
*.json
secrets.json
  • 특정 도구 및 라이브러리에 따라 추가: Rider, ReSharper, StyleCop 등.