.gitignore를 사용하는 방법: 예제와 함께 실용적인 소개

Git을 사용할 때 저장소를 청소하고 조직화하는 것은 그냥 최선의 방법뿐만 아니라 원활한 협업과 효율적인 버전 관리에 필수적입니다. 그것이 .gitignore가 필요한 이유입니다. 이 편리한 파일은 Git에 어떤 파일을 무시할지 알려주어 불필요한 혼란을 방지하고 커밋을 실제로 중요한 내용에 집중하게 합니다.

만약 .gitignore가 없다면, 저장소가 임시 파일, 로그 및 버전 관리에 속하지 않는 기타 항목으로 빠르게 채워질 수 있습니다. 더 나쁜 경우에는 민감한 정보를 실수로 공유할 수도 있습니다.

이 튜토리얼에서는 프로젝트를 깔끔하게 유지하고 일반적인 함정을 피하며 Git을 더 효율적으로 활용하기 위해 .gitignore 파일을 생성하고 사용하는 방법을 배우게 됩니다. 시작해봅시다!

.gitignore 파일이란?

.gitignore 파일은 Git에서 사용되는 구성 파일로, 변경 사항이 스테이징되거나 커밋될 때 무시해야 할 파일 또는 디렉토리를 버전 관리 시스템에 지시하는 데 사용됩니다.

임시 파일, 시스템 생성 파일 또는 빌드 관련 파일과 같은 불필요한 파일을 저장소에서 제거합니다. 저장소를 청소하면 협업이 더 쉬워지고 필수 파일만 추적되도록 보장됩니다.

.gitignore 파일은 Git 리포지토리의 루트 디렉토리에 위치한 간단한 텍스트 파일입니다. 이 파일에는 Git에 어떤 파일 또는 디렉토리를 무시할지 알려주는 패턴이 포함되어 있습니다. 이러한 패턴은 프로젝트의 요구에 맞게 사용자 정의할 수 있으며, 잘 구성된 리포지토리를 유지하는 데 도움이 됩니다.

Git과 GitHub를 처음 사용하시나요? GitHub 및 Git 튜토리얼로 버전 관리에 대한 초보자 친화적인 소개를 받아보세요.

다음은 무시해야 할 파일 및 디렉토리의 일반적인 범주 몇 가지입니다:

  • 빌드 아티팩트: 소스 코드에서 재생성할 수 있는 빌드 프로세스 중 생성된 파일들로, 다음과 같습니다:
    • dist/, build/ (프론트엔드 및 백엔드 빌드 출력물)
    • target/ (Java 및 기타 컴파일된 언어 빌드)
  • 의존성: 패키지 관리 시스템이 설치된 라이브러리를 위한 디렉토리를 생성하며, 이러한 디렉토리는 추적되어서는 안 됩니다:
    • node_modules/ (Node.js)
    • vendor/ (PHP, Composer)
    • .venv/, venv/ (Python 가상 환경)
  • 시스템별 파일: 운영 체제에 의해 자동으로 생성된 파일로 프로젝트에 기여하지 않습니다:
    • .DS_Store (macOS)
    • Thumbs.db (Windows)
  • IDE 구성 파일: 각 개발자는 다른 개발 환경을 사용할 수 있으므로 개인 설정은 버전 관리에 포함되어서는 안 됩니다:
    • .vscode/ (VS Code)
    • .idea/ (JetBrains IDEs)
    • .project, .settings/ (Eclipse)
  • 로그 및 임시 파일: 로그, 캐시 및 임시 파일은 불필요한 혼란을 방지하기 위해 무시해야 합니다:
    • *.log, npm-debug.log*, yarn-debug.log*, yarn-error.log* (다양한 도구의 로그)
    • *.tmp, *.bak (임시 및 백업 파일)
    • .mypy_cache/, __pycache__/ (Python 캐시)
    • .ipynb_checkpoints/ (Jupyter Notebook 체크포인트)
  • 환경 및 비밀 파일: 민감한 자격 증명 및 환경별 구성은 절대로 커밋되어서는 안 됩니다:
    • .env, .env.local, .env.development, .env.production
    • secrets.json, config.json (민감한 구성 파일)
  • 데이터베이스 및 저장 파일: 이들은 로컬에서 생성되며 버전 관리에 포함되지 말아야 합니다:
    • *.sqlite, *.sqlite3, *.db (SQLite 데이터베이스 파일)
    • dump.rdb (Redis 데이터베이스 덤프)
  • CI/CD 및 코드 커버리지 파일: 테스트 커버리지 보고서 및 기타 CI/CD 아티팩트는 무시되어야 합니다:
    • coverage/, *.lcov (코드 커버리지 보고서)
    • .tox/, .pytest_cache/ (Python testing files)

Git을 설치해야합니까? 빠르게 설정하려면 Git 설치 자습서를 따르세요.

.gitignore 구문

.gitignore 파일에는 리포지토리 내 파일 이름과 일치하는 패턴이 포함되어 해당 파일을 무시해야 할지 여부를 결정합니다.

기본 구문

.gitignore 파일은 각각이 무시할 패턴을 나타내는 줄로 구성됩니다. 패턴은 다음과 일치할 수 있습니다:

  • 특정 파일
  • 파일 유형
  • 디렉토리

파일은 주석을 지원하며, 줄을 #로 시작하여 추가할 수 있으며 가독성을 높이기 위해 빈 줄도 있습니다.

기본 구조 개요는 다음과 같습니다:

  • 특정 파일 무시: 무시하려는 파일 이름을 직접 나열할 수 있습니다.
secrets.txt
  • 디렉토리 전체를 무시하려면: 디렉토리 이름 뒤에 /를 추가하여 해당 디렉토리 내의 모든 것을 무시할 수 있습니다.
logs/
  • 특정 유형의 모든 파일을 무시하려면: 와일드카드(*)를 사용하여 특정 확장자를 가진 모든 파일을 무시할 수 있습니다.
*.py
  • 부정: 특정 파일이나 디렉토리를 무시하고 싶지 않을 때, !를 사용하여 패턴을 부정화하여 해당 파일이나 디렉토리를 추적할 수 있습니다.
*.txt # Ignores all .txt files !readme.txt # Except for readme.txt

.gitignore 파일 생성 및 사용 방법

.gitignore 생성 및 사용은 매우 간단합니다. 이 섹션에서는 단계별로 안내하겠습니다.

.gitignore 파일 만들기

단계 1: 저장소 루트로 이동. .gitignore 파일은 일반적으로 Git 프로젝트의 루트 디렉토리에 위치합니다. 터미널이나 명령줄을 열고 Git 저장소의 루트 디렉토리로 이동합니다:

cd /path/to/your/repo

단계 2: .gitignore 파일 생성. 루트 디렉토리에 들어간 후, 텍스트 편집기를 사용하거나 터미널에서 다음과 같은 명령을 실행하여 .gitignore 파일을 생성합니다:

touch .gitignore

단계 3: 파일에 패턴 추가. 텍스트 편집기에서 .gitignore 파일을 열고 파일이나 디렉토리를 무시하기 위한 필요한 패턴을 추가합니다. 각 줄은 다른 패턴을 나타냅니다.

기본 프로젝트에서 일반적으로 사용되는 예시 .gitignore 파일은 다음과 같습니다:

# node_modules 및 의존성 디렉토리 무시 node_modules/ vendor/ # 빌드 생성물 무시 dist/ build/ *.log # 시스템이 생성한 파일 무시 .DS_Store Thumbs.db # 환경 및 비밀 파일 무시 .env config.json

필요한 패턴을 추가한 후 파일을 저장합니다. 이제 Git은 변경 사항을 스테이징하거나 커밋할 때 이러한 파일을 자동으로 무시합니다.

단계 4: 파일을 저장소에 커밋. .gitignore 파일을 저장소에 커밋하는 것이 중요합니다. 이렇게 하면 모든 공동 작업자가 동일한 무시 규칙을 사용하게 되어 프로젝트 전체에 대한 일관성을 보장할 수 있습니다.

git add .gitignore git commit -m "Add .gitignore file" git push

.gitignore 파일을 커밋하면 전체 팀에 대한 공유된 무시 규칙이 설정됩니다.

Git에서 푸시(push)와 풀(pull)을 숙달하고 싶으신가요? 이 Git 푸시(push) 및 풀(pull) 튜토리얼에서 원격 저장소와 작업을 동기화하는 방법을 배워보세요. 이 Git 푸시(push) 및 풀(pull) 튜토리얼에서.

.gitignore 사용에 대한 모범 사례

.gitignore 파일을 만드는 것은 깔끔한 Git 저장소를 유지하는 간단한 부분이지만, 시간이 지남에 따라 파일을 효과적으로 관리하기 위해 몇 가지 모범 사례를 따르는 것이 좋습니다.

전역 .gitignore를 사용

여러 프로젝트를 거쳐 작업하는 개발자들은 프로젝트 유형에 관계없이 모든 저장소에서 제외하고 싶은 특정 파일이 있을 수 있습니다.

각 프로젝트의 .gitignore 파일에 추가하는 대신 시스템의 모든 저장소에 적용되는 전역 .gitignore를 구성할 수 있습니다.

전역 .gitignore 파일을 구성하려면:

  • .gitignore_global 파일을 만듭니다:
touch ~/.gitignore_global
  • 원하는 모든 파일을 전역적으로 무시하려면 다음과 같은 패턴을 추가하세요:
.DS_Store *.log /.vscode/ /.idea/
  • Git이 전역 .gitignore를 사용하도록 설정하세요:
git config --global core.excludesfile ~/.gitignore_global

기존 템플릿 활용

각 새 프로젝트를 위해 처음부터 .gitignore 파일을 작성하는 대신, 특정 언어, 프레임워크 또는 환경용 미리 구성된 .gitignore 템플릿을 활용할 수 있습니다.

이러한 템플릿에 대한 최상의 자료는 GitHub의 공식 .gitignore 저장소에서 찾을 수 있으며, 거기서 수백 가지 프로그래밍 언어와 프레임워크에 맞는 .gitignore 파일을 찾을 수 있습니다.

.gitignore를 정기적으로 검토하세요.

프로젝트가 진화함에 따라 새 파일과 디렉터리가 .gitignore 파일에 포함되어야 할 수도 있습니다. 프로젝트의 현재 상태를 반영하도록 파일을 주기적으로 검토하고 업데이트하는 것이 중요합니다.

.gitignore 파일을 업데이트해야 하는 몇 가지 시나리오:

  • 추가 파일을 생성하는 새로운 도구나 라이브러리를 채택한 경우(예: 새로운 빌드 시스템으로 전환).
  • 디렉터리를 리팩토링하거나 재구성한 경우, 제외해야 할 새 파일이 발생할 수 있습니다.
  • 프로젝트의 일부가 아닌 더 이상 사용되지 않는 파일이나 디렉터리를 제거한 경우.

.gitignore에 대한 문제 해결

.gitignore 파일을 설정한 후에도 특정 파일이 추적되는 상황이 발생하거나 패턴이 예상대로 작동하지 않는 경우가 있을 수 있습니다. 이 섹션에서는 두 가지 일반적인 문제 해결 영역과 해결 방법을 다룰 것입니다.

이미 커밋된 파일 추적하기 

.gitignore 파일은 이미 커밋된 파일에는 역적용되지 않습니다.

일부 파일이 이미 커밋된 상태에서 .gitignore에 패턴을 추가하면 Git은 해당 파일이 .gitignore 파일의 패턴과 일치하더라도 계속해서 추적합니다.

이미 커밋된 파일의 추적을 중단하려면 다음 단계를 따르십시오:

  • Git 추적에서 파일 제거: 작업 디렉토리에 유지하면서 저장소에서 제거하려면 git rm 명령을 사용하십시오.
git rm --cached <file_or_directory_name>
  • 변경 사항 커밋: Git 추적에서 파일을 제거한 후 변경 사항을 커밋하여 파일이 버전 관리 기록의 일부가 아님을 보장하십시오.
git commit -m "Stop tracking ignored files"
  • 변경 사항을 원격 저장소로 푸시: 마지막으로 변경 사항을 원격 저장소로 푸시하여 파일이 더 이상 추적되지 않도록 보장하십시오.
git push

이 단계를 수행한 후 Git은 파일을 추적하지 않게 됩니다. 커밋된 파일은 여전히 작업 디렉토리에 있지만 향후 커밋에서는 .gitignore 패턴에 따라 무시될 것입니다.

패턴이 제대로 작동하는지 확인하십시오 

가끔 예상대로 무시되어야 하는 특정 파일이 Git의 상태에 표시되거나 추적되는 경우가 있을 수 있습니다. 

.gitignore 패턴이 제대로 작동하는지 확인하려면 다음 단계를 따르십시오:

  • 파일 상태를 확인하십시오: Git이 추적하는 파일을 보려면 git status 명령을 사용하십시오. 이를 통해 무시된 파일이 여전히 목록에 있는지 확인할 수 있습니다.
git status
  • 패턴이 올바른지 확인하세요:.gitignore 패턴의 구문을 다시 확인하여 올바르게 형식화되어 있는지 확인하세요. 예를 들어:
    • 저장소 루트에 대한 올바른 디렉토리 경로를 사용했는지 확인하세요.
    • 비슷한 이름을 가진 모든 파일을 추적하지 않도록 특정 디렉토리를 대상으로 하기 위해 /를 추가하세요.
  • 캐시를 새로 고침하세요:.gitignore 파일을 최근에 업데이트했지만 변경 사항이 적용되지 않는 경우, Git이 이전 캐시를 유지하고 있을 수 있습니다. 캐시를 새로 고치려면 다음 명령을 실행하세요:
git rm -r --cached . git add . git commit -m "Refresh .gitignore"
  • 예외 사항을 확인하세요: 때로는 .gitignore 파일의 특정 패턴이 파일의 다른 곳에서 더 구체적인 패턴에 의해 무시될 수 있습니다. 충돌하는 패턴이 없는지 확인하기 위해 규칙을 검토하세요.

빠른 Git 참고 자료를 찾고 계신가요? 필수 명령어를 손끝에서 바로 확인하려면 이 Git 치트 시트를 확인하세요.

결론

.gitignore 파일은 작아보일 수 있지만, Git 리포지토리를 깨끗하고 관리하기 쉽게 유지하는 데 엄청난 역할을 합니다. 의존성, 빌드 아티팩트, 시스템에서 생성된 파일과 같이 불필요한 파일을 무시함으로써 프로젝트를 정리하고 혼란으로부터 자유롭게 유지할 수 있습니다.

이 튜토리얼에서는 .gitignore 파일을 만드는 방법, 패턴을 추가하는 방법, 그리고 귀하의 리포를 효율적으로 유지하기 위한 최상의 방법을 적용하는 방법을 배웠습니다. 이러한 기술을 보유하면 버전 관리 문제를 피하고 팀의 모든 구성원에게 협업을 더 원활하게 만들 수 있습니다.

Git 기술을 더 깊게 파고들고 싶다면, 체계적인 학습 경로를 제공하는 Git Fundamentals를 확인해보세요. 또한 Git의 기초GitHub 개념 소개와 같은 실습 중심의 코스를 탐험하여 버전 관리 및 협업 워크플로우에 대한 견고한 이해를 구축할 수 있습니다!

Source:
https://www.datacamp.com/tutorial/gitignore