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
등.