반응형
Git을 사용하다 보면 .gitattributes와 .gitignore 파일을 자주 마주치게 됩니다.
이 두 파일은 모두 Git의 동작 방식을 제어하지만, 목적과 역할은 완전히 다릅니다.
이번 글에서는 두 파일의 차이점과 사용 시점을 명확히 정리해보겠습니다.
🔍 1. 기본 개념 비교
구분.gitignore.gitattributes
| 목적 | Git이 추적하지 않을 파일을 지정 | **Git이 파일을 다루는 방식(속성)**을 지정 |
| 적용 범위 | 로컬 저장소(파일 무시 설정) | 저장소 전체(파일 속성, 처리 방식 설정) |
| 주로 설정하는 항목 | 빌드 결과물, 캐시 파일, 환경 설정 파일 등 | EOL 변환, diff/merge 동작, 언어 인코딩 등 |
| 버전 관리 여부 | 일반적으로 버전 관리 대상임 | 버전 관리 대상임 (속성은 Git 동작에 직접 반영됨) |
🧩 2. .gitignore — 추적 제외 설정
.gitignore는 Git이 관리하지 않아야 할 파일을 지정합니다.
예를 들어 빌드 과정에서 생성되는 파일이나, 개인 로컬 설정 파일 등을 무시할 때 사용합니다.
✅ 예시
# 빌드 결과물 무시 /dist /build # 로그 파일 무시 *.log # 환경 설정 파일 무시 .env
📌 사용 시점
- 프로젝트 빌드나 실행 시 자동으로 생성되는 파일이 있을 때
- 개발자 개인 설정 파일(예: .vscode/settings.json)을 공유하지 않으려 할 때
- 특정 폴더 전체를 추적에서 제외하고 싶을 때
⚙️ 3. .gitattributes — Git 동작 방식 제어
.gitattributes는 Git이 파일을 처리하는 방법을 세밀하게 제어합니다.
이 파일은 단순히 "무시"하는 게 아니라, 추적 중인 파일의 속성을 설정합니다.
✅ 예시
# 텍스트 파일의 줄바꿈(EOL) 통일 *.txt text eol=lf # 특정 파일은 바이너리로 처리 *.png binary # 언어별 diff 설정 *.md diff=markdown # 특정 파일 병합 전략 지정 *.lock merge=ours
📌 사용 시점
- 운영체제별 줄바꿈 문제(CRLF/LF) 를 방지하고 싶을 때
- 이미지나 바이너리 파일은 diff 대상에서 제외하고 싶을 때
- 특정 파일에 대해 병합 충돌 방지 규칙을 지정하고 싶을 때
- Git LFS(대용량 파일 관리) 를 적용할 때 → 예:
-
*.zip filter=lfs diff=lfs merge=lfs -text
💡 4. 핵심 차이 요약
항목.gitignore.gitattributes
| 역할 | Git이 무시할 파일 지정 | Git이 파일을 다루는 방식 지정 |
| 적용 대상 | 추적 제외할 파일 | 추적 중인 파일 |
| 주요 기능 | 파일/폴더 무시 | 줄바꿈, diff, merge, 인코딩, LFS 설정 |
| 공통점 | 둘 다 버전 관리 가능 | 둘 다 Git 설정 파일 |
🚀 5. 실제 프로젝트에서의 예시 구성
# .gitignore node_modules/ dist/ .env *.log
# .gitattributes * text=auto *.sh text eol=lf *.bat text eol=crlf *.png binary
이렇게 두 파일을 함께 사용하면
👉 불필요한 파일은 무시하고,
👉 필요한 파일은 일관된 방식으로 관리할 수 있습니다.
✅ 마무리
정리하자면,
- .gitignore → "이 파일은 Git이 신경 안 써도 돼!"
- .gitattributes → "이 파일은 이렇게 다뤄줘!"
두 파일을 적절히 조합하면 협업 시 환경 차이로 인한 문제를 줄이고,
보다 안정적인 버전 관리를 할 수 있습니다. 🚀
반응형
'개발 > 홈서버 인프라관리' 카테고리의 다른 글
| 무료도메인 DUCK DNS (0) | 2025.10.11 |
|---|---|
| 공유기 관리페이지 및 무료도메인 (0) | 2025.10.11 |
| 맥미니 원격 접근 방법 (0) | 2025.10.06 |
| 맥미니 원격 세팅 (시스템설정 -> 네트워크 설정 -> homebrew설정) (0) | 2025.10.06 |
| 홈서버 구축 일기 (맥미니 구매) (0) | 2025.10.06 |