Gitignore 로 파일 무시하기

GitBeginner
지금 연습하기

소개

소프트웨어를 개발하다 보면 프로젝트 폴더에 공유해서는 안 되는 파일이 쌓일 수 있습니다. 예를 들면 다음과 같습니다.

  • 임시 파일: 편집기나 운영 체제가 생성하는 파일입니다 (예: .DS_Store).
  • 빌드 결과물: 컴파일된 코드입니다 (예: .exe, .class).
  • 로그: 프로그램 실행 기록을 저장하는 파일입니다 (예: debug.log).
  • 비밀 정보: API 키나 비밀번호입니다 (절대로 커밋하면 안 됩니다!).

Git 에는 .gitignore라는 기능이 있습니다. 이 파일은“추적하지 않을 파일”을 지정하는 간단한 목록입니다. 파일이 이 목록의 규칙과 일치하면 Git 은 기본적으로 해당 파일을 추적하지 않습니다.

이는 작업 트리에 적용하는 정책입니다. 추적되지 않은 파일 중 어떤 파일을 추가할 소스 파일이 아니라 일반적인 부수 파일로 취급할지 Git 에 알려 줍니다.

단순히 폴더를 깔끔하게 유지하는 것만을 위한 기능은 아닙니다. 잘 작성한 .gitignore는 불필요한 파일로 인한 잡음과 지나치게 커진 저장소를 방지하고, 비밀 정보나 컴퓨터별 불필요한 파일을 실수로 커밋하는 일을 막는 데 도움이 됩니다.

이 실습에서는 다음 작업을 수행합니다.

  1. 무시할“불필요한”파일을 만듭니다.
  2. .gitignore 파일을 설정합니다.
  3. Git 이 불필요한 파일을 제대로 무시하는지 확인합니다.

로그 파일 만들기

먼저“불필요한”데이터를 나타내는 파일을 만듭니다. 애플리케이션이 실행될 때마다 로그 파일을 생성한다고 가정합니다. 디버깅을 위해 이 파일은 로컬 컴퓨터에 보관하되, 팀원과 공유하거나 기록에 저장하지 않으려고 합니다.

프로젝트 디렉터리로 이동합니다.

cd ~/project

더미 콘텐츠가 들어 있는 debug.log 파일을 만듭니다.

echo "System started at $(date)" > debug.log

파일이 생성되었는지 확인합니다.

ls

이제 git status를 실행하면 Git 은 이 파일을“Untracked”상태로 보고 추가하라고 계속 알립니다.

이는 Git 이 발견했지만 아직 무시하도록 설정하지 않은 파일에 대한 정상적인 동작입니다. Git 은 사실상 이 파일을 저장소의 일부로 만들지 묻고 있는 것입니다.

.gitignore 파일 만들기

특정 파일에 대해 Git 이 더 이상 알리지 않도록 하려면 .gitignore라는 특수 설정 파일이 필요합니다.

프로젝트 루트에 파일을 만듭니다.

touch .gitignore

파일이 생성되었는지 확인합니다. 이름이 점 (.) 으로 시작하므로 숨김 파일로 표시된다는 점에 유의합니다.

ls -a

.gitignore 파일은 일반 텍스트 파일입니다. 일반적으로 .gitignore 파일 자체는 커밋해야 합니다. 그래야 팀원 모두가 동일한 무시 규칙을 공유할 수 있습니다.

이 구분이 중요합니다. 무시되는 파일은 보통 로컬에서 생성되는 결과물이지만, .gitignore 자체는 일반적으로 프로젝트 설정이므로 버전 관리에 포함해야 합니다.

무시 규칙 설정하기

이제 모든 로그 파일을 무시하는 규칙을 추가합니다.

와일드카드 *를 사용하면“이름이 .log로 끝나는 모든 항목”을 지정할 수 있습니다.

.gitignore 파일에 *.log 패턴을 추가합니다.

echo "*.log" > .gitignore

파일 내용을 확인합니다.

cat .gitignore

출력:

*.log

이 한 줄은 Git 에 다음과 같이 지시합니다. “이 디렉터리와 모든 하위 디렉터리에서 이름이 .log로 끝나는 파일을 무시하라.”

무시 규칙은 파일 하나에만 적용되는 지시가 아니라 패턴을 기반으로 적용됩니다. 따라서 짧은 .gitignore 파일만으로도 생성 파일이나 불필요한 파일의 여러 범주를 관리할 수 있습니다.

무시 상태 확인하기

규칙이 제대로 작동하는지 테스트합니다.

git status를 실행합니다.

git status

출력을 확인합니다.

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    .gitignore

잠시만요! debug.log는 어디에 있을까요?

목록에서 사라졌습니다! 이는 Git 이 해당 파일을 성공적으로 무시하고 있다는 뜻입니다. Git 은 최종적으로 커밋해야 하는 .gitignore 자체만 표시하고, debug.log는 Git 에 보이지 않는 상태로 둡니다.

이것이 **추적되지 않음 (Untracked)**과 **무시됨 (Ignored)**의 실제 차이입니다. 추적되지 않은 파일은 여전히 추가할 파일로 제안되지만, 무시되는 파일은 의도적으로 이러한 알림 대상에서 제외됩니다.

한 번 더 확인하려면 check-ignore 명령으로“이 파일이 무시되는 이유는 무엇인가?”를 확인할 수 있습니다.

git check-ignore -v debug.log

출력:

.gitignore:1:*.log debug.log

이 출력은 다음을 의미합니다. .gitignore 1 번째 줄의 *.log 규칙 때문에 debug.log 파일이 무시되고 있습니다.

요약

이 실습에서는 저장소를 깔끔하게 유지하는 방법을 배웠습니다.

핵심 정리:

  1. .gitignore: Git 이 무시할 패턴을 나열하는 텍스트 파일입니다.
  2. 와일드카드: 여러 파일을 일치시키려면 *를 사용합니다 (예: *.log).
  3. 추적되지 않음과 무시됨의 차이: 무시되는 파일은 Git 의 관점에서 존재하지 않는 것처럼 취급됩니다. 단, 파일은 여전히 디스크에 존재합니다.

이 간단한 파일은 강력한 기능을 제공합니다. 임시 파일, 바이너리 파일 또는 민감한 키를 실수로 커밋하는 일을 막아 프로젝트를 전문적이고 안전하게 유지할 수 있습니다.