Git을 사용하여 파일 변경 무시

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Git에서 프로젝트의 모든 파일을 추적해서는 안 됩니다. 개발 환경의 임시 파일, 테스트 출력 및 로그는 모두 추적할 필요가 없는 파일의 예입니다.

다양한 메커니즘을 사용하여 추적하지 않을 프로젝트의 파일을 Git에 알리고 Git에서 해당 파일에 대한 변경 내용을 보고하지 않도록 할 수 있습니다. Git에서 추적하지 않는 파일의 경우 또는 .gitignoreexclude 파일을 사용할 수 있습니다. Git에서 추적하는 파일의 경우 Git에 추적을 중지하고 변경 내용을 무시하도록 지시할 수 있습니다.

이 문서에서는 다음 방법을 설명합니다.

  • 파일을 사용하여 추적되지 않은 파일에 대한 변경 내용을 무시합니다 .gitignore .
  • 파일을 사용하여 추적되지 않은 파일에 대한 변경 내용을 무시합니다 exclude .
  • 파일 추적을 중지하고 명령을 사용하여 변경 내용을 무시합니다 git update-index .
  • 파일 추적을 중지하고 명령을 사용하여 변경 내용을 무시합니다 git rm .

.gitignore 파일 사용

.gitignore 파일을 추가하고 구성하여 프로젝트의 특정 파일을 추적하지 않도록 Git에 지시할 수 있습니다. 파일의 항목은 .gitignore 추적되지 않은 파일에만 적용됩니다. Git이 추적된 파일에 변경 내용을 보고하는 것을 방지하지는 않습니다. 추적된 파일은 커밋된 파일이며 마지막 Git 스냅샷 존재합니다.

파일의 각 줄은 .gitignore 파일 경로를 기준으로 .gitignore 파일 검색 패턴을 지정합니다. .gitignore 구문은 유연하며 wild카드s를 사용하여 이름, 확장명 및 경로별로 개별 또는 여러 파일을 지정할 수 있습니다. Git은 검색 패턴을 프로젝트의 파일과 일치 .gitignore 하여 무시할 파일을 결정합니다.

일반적으로 프로젝트의 루트 폴더에 파일을 추가 .gitignore 합니다. 그러나 모든 프로젝트 폴더에 파일을 추가하여 .gitignore 중첩된 깊이에서 해당 폴더 및 하위 폴더 내에서 무시할 파일을 Git에 알릴 수 있습니다. 여러 .gitignore 파일의 경우 파일이 폴더 내에서 지정하는 .gitignore 파일 검색 패턴이 상위 폴더 내에서 지정하는 .gitignore 패턴보다 우선합니다.

파일을 수동으로 만들고 .gitignore 파일 패턴 항목을 추가할 수 있습니다. 또는 GitHub gitignore 리포지토리에서 개발 환경에 대한 템플릿을 다운로드 .gitignore 하여 시간을 절약할 수 있습니다. 파일 사용 .gitignore 의 이점 중 하나는 변경 내용을 커밋하고 다른 사용자와 공유할 수 있다는 것입니다.

참고 항목

Visual Studio는 .gitignore Git 리포지토리를 만들 때 Visual Studio 개발 환경에 대한 파일을 자동으로 만듭니다.

Visual Studio 2022는 솔루션 탐색기 Git 메뉴, Git 변경 내용 및 바로 가기 메뉴를 통해 Git 버전 제어 환경을 제공합니다. Visual Studio 2019 버전 16.8은 팀 탐색기 Git 사용자 인터페이스도 제공합니다. 자세한 내용은 Visual Studio 2019 - 팀 탐색기 탭을 참조하세요.

Git 변경 내용 창에서 Git에서 무시하려는 변경된 파일을 마우스 오른쪽 단추로 클릭한 다음 이 로컬 항목 무시 또는 이 확장 무시를 선택합니다. 추적된 파일에는 이러한 메뉴 옵션이 없습니다.

Visual Studio의 Git 변경 내용 창에서 변경된 파일에 대한 상황에 맞는 메뉴 옵션의 스크린샷.

이 로컬 항목 무시 옵션은 파일에 새 항목을 .gitignore 추가하고 변경된 파일 목록에서 선택한 파일을 제거합니다.

확장 무시 옵션은 파일에 새 항목을 .gitignore 추가하고 변경된 파일 목록에서 선택한 파일과 동일한 확장자를 가진 모든 파일을 제거합니다.

두 옵션 모두 리포지토리의 루트 폴더에 파일이 아직 없는 경우 파일을 만들고 .gitignore 해당 파일에 항목을 추가합니다.

gitignore 파일 편집

파일의 .gitignore 각 항목은 무시할 파일을 지정하는 파일 검색 패턴, 숫자 기호() 또는 빈 줄(#가독성을 위해)으로 시작하는 주석입니다. 구문.gitignore 유연하며 wild카드를 사용하여 이름, 확장명 및 경로별로 개별 또는 여러 파일을 지정할 수 있도록 지원합니다. 파일 검색 패턴의 모든 경로는 파일을 기준으로 합니다 .gitignore .

다음은 일반적인 파일 검색 패턴의 몇 가지 예입니다.

# Ignore all files with the specified name.
# Scope is all repo folders.
config.json

# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json

# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json

# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile

# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile

# Ignore all files in the 'logs' subfolder.
/logs/

파일을 수정 .gitignore 하는 즉시 Git은 무시되는 파일 목록을 업데이트합니다.

참고 항목

Windows 사용자는 백슬래시()를 사용하는 대신 파일에서 .gitignore 슬래시(/\)를 경로 구분 기호로 사용해야 합니다. 모든 사용자는 폴더를 지정할 때 후행 슬래시를 추가해야 합니다.

전역 .gitignore 파일 사용

모든 로컬 Git 리포지토리에 적용되는 전역 무시 파일로 파일을 지정할 .gitignore 수 있습니다. 이렇게 하려면 다음과 같이 명령을 사용합니다 git config .

git config core.excludesfile <gitignore file path>

전역 .gitignore 파일을 사용하면 Git이 로컬 리포지토리에서 컴파일된 이진 파일과 같은 특정 파일 형식을 커밋하지 않도록 할 수 있습니다. 리포지토리별 .gitignore 파일의 파일 검색 패턴은 전역 .gitignore 파일의 패턴보다 우선합니다.

제외 파일 사용

로컬 리포지토리 폴더의 파일에 파일 검색 패턴 exclude.git/info/ 대한 항목을 추가할 수도 있습니다. 이 exclude 파일을 사용하면 Git에서 무시할 추적되지 않은 파일을 알 수 있습니다. 파일과 동일한 구문을 파일 검색 패턴에 .gitignore 사용합니다.

파일의 항목은 exclude 추적되지 않은 파일에만 적용됩니다. Git이 이미 추적한 커밋된 파일에 변경 내용을 보고하는 것을 방지하지는 않습니다. 리포지토리당 하나의 exclude 파일만 존재합니다.

Git은 파일을 커밋하거나 푸시 exclude 하지 않으므로 다른 사용자에게 영향을 주지 않고 로컬 시스템의 파일을 무시하도록 안전하게 사용할 수 있습니다.

git update-index를 사용하여 변경 내용 무시

경우에 따라 로컬 리포지토리 파일 추적을 일시적으로 중지하고 Git에서 파일의 변경 내용을 무시하도록 하는 것이 편리합니다. 예를 들어 변경 내용을 커밋할 위험 없이 개발 환경에 대한 설정 파일을 사용자 지정할 수 있습니다. 이렇게 하려면 플래그를 사용하여 git update-index 명령을 실행할 수 있습니다.skip-worktree

git update-index --skip-worktree <file path>

추적을 다시 시작하려면 플래그를 사용하여 git update-index 명령을 실행합니다 --no-skip-worktree .

또는 일시적으로 파일 추적을 중지하고 플래그가 있는 명령을 assume-unchanged 사용하여 git update-index Git에서 파일 변경 내용을 무시하도록 할 수 있습니다. 파일 콘텐츠를 변경하는 Git pull 작업이 플래그를 skip-worktree 되돌리기 assume-unchanged 수 있으므로 이 옵션은 플래그보다 덜 효과적입니다.

git update-index --assume-unchanged <file path>

추적을 다시 시작하려면 플래그를 사용하여 git update-index 명령을 실행합니다 --no-assume-unchanged .

git rm을 사용하여 변경 내용 무시

또는 exclude 파일의 .gitignore 항목은 Git이 이미 추적하는 파일에 영향을 주지 않습니다. Git은 이전에 커밋한 파일을 추적합니다. Git에서 파일을 더 이상 추적하지 않고 파일 시스템에서 삭제하지 않도록 Git 스냅샷 파일을 영구적으로 제거하려면 다음 명령을 실행합니다.

git rm --cached <file path>
git commit <some message>

그런 다음, 또는 .gitignoreexclude 파일 항목을 사용하여 Git이 파일의 변경 내용을 보고하지 못하도록 합니다.

다음 단계