Git 기초편 6편 — .gitignore 제대로 쓰기

2026. 5. 11. 10:05·블로그, 컴퓨터/DevOps

git 연재글 썸네일

"Git을 공부하면서 쓰는 시리즈" 6편입니다.


시작하면서

GitHub에 코드를 올리다가 실수로 올리면 안 되는 파일을 같이 올린 경험이 있습니다. 데이터베이스 비밀번호가 담긴 설정 파일이나, 수백 MB짜리 라이브러리 폴더 같은 것들이요.

올리고 나서야 알아차리는 경우가 많습니다. 커밋 기록에도 남고, 이미 공개된 저장소라면 누군가 봤을 수도 있습니다. 이걸 사전에 막는 게 .gitignore입니다.


.gitignore가 하는 일

.gitignore는 프로젝트 루트에 두는 텍스트 파일입니다. 여기에 적힌 파일이나 폴더는 Git이 아예 없는 것처럼 무시합니다. git status에도 안 뜨고, git add .를 해도 포함되지 않습니다.

만들어봅니다.

touch .gitignore

기본 패턴

파일 이름 그대로 적기

.env
secret.txt

이름이 정확히 일치하는 파일을 무시합니다.

확장자로 묶기

*.log
*.tmp
*.DS_Store

*는 "아무 문자열"을 뜻합니다. *.log는 확장자가 .log인 모든 파일을 무시합니다.

폴더 무시하기

node_modules/
dist/
.gradle/

폴더 이름 뒤에 /를 붙이면 그 폴더 전체를 무시합니다. /를 안 붙여도 동작은 하지만, 폴더라는 걸 명시적으로 표현하기 위해 붙이는 게 관례입니다.

특정 경로만 무시하기

/config.yml

맨 앞에 /를 붙이면 프로젝트 루트 기준으로만 적용됩니다. 하위 폴더에 있는 같은 이름의 파일은 무시하지 않습니다.

예외 처리 — 무시하지 않기

*.log
!important.log

!를 앞에 붙이면 "이건 무시하지 말아라"는 뜻입니다. *.log로 전체를 무시하되, important.log만 예외로 추적합니다.


실제로 자주 쓰는 패턴

프로젝트 종류에 따라 무시해야 하는 파일이 다릅니다. 자주 쓰이는 것들입니다.

환경 설정 파일 — API 키, 비밀번호, 토큰이 담기는 경우가 많습니다.

.env
.env.local
.env.*.local

의존성 폴더 — 패키지 매니저로 언제든 다시 설치할 수 있어서 올릴 필요가 없습니다.

node_modules/
vendor/

빌드 결과물 — 소스코드로 다시 생성할 수 있는 파일들입니다.

dist/
build/
*.class
*.pyc

에디터 설정 파일 — 개인 환경에 따라 다르기 때문에 저장소에 포함하지 않는 게 일반적입니다.

.vscode/
.idea/
*.swp

OS가 자동으로 만드는 파일

.DS_Store        # macOS
Thumbs.db        # Windows

gitignore.io — 자동으로 만들어주는 사이트

언어, 프레임워크, 에디터를 입력하면 .gitignore 내용을 자동으로 만들어주는 사이트가 있습니다.

gitignore.io

예를 들어 Node, macOS, VSCode를 입력하면 세 환경에 맞는 패턴을 합쳐서 보여줍니다. 처음 프로젝트를 시작할 때 여기서 생성해서 붙여넣는 게 편합니다.


이미 추적 중인 파일을 뒤늦게 제외하려면

여기서 많이 막힙니다. .gitignore에 추가했는데도 파일이 계속 git status에 뜨는 경우입니다.

이건 .gitignore가 잘못된 게 아닙니다. 이미 Git이 추적 중인 파일은 .gitignore가 무시하지 못합니다. 이미 한 번이라도 git add된 파일은 Git의 관리 목록에 올라가 있어서, .gitignore에 추가해도 소용이 없습니다.

해결 방법은 Git의 추적 목록에서 제거하는 겁니다. 파일 자체는 삭제하지 않고요.

git rm --cached <파일이름>

--cached가 핵심입니다. 로컬 파일은 그대로 두고, Git의 추적만 끊습니다.

폴더 전체를 한 번에 제거하려면 -r을 추가합니다.

git rm --cached -r node_modules/

이후 .gitignore에 해당 파일/폴더를 추가하고 커밋하면 됩니다.

echo "node_modules/" >> .gitignore
git add .gitignore
git commit -m "node_modules를 gitignore에 추가"

전역 .gitignore 설정하기

.DS_Store나 에디터 설정 파일처럼 모든 프로젝트에서 항상 무시하고 싶은 파일이 있습니다. 프로젝트마다 .gitignore에 추가하는 건 번거롭습니다.

이런 경우 전역 .gitignore를 만들어두면 됩니다.

git config --global core.excludesfile ~/.gitignore_global

~/.gitignore_global 파일을 만들고 거기에 패턴을 추가합니다.

echo ".DS_Store" >> ~/.gitignore_global
echo ".idea/" >> ~/.gitignore_global
echo "*.swp" >> ~/.gitignore_global

이제 이 컴퓨터의 모든 Git 저장소에서 해당 파일들이 무시됩니다.


.gitignore가 잘 동작하는지 확인하기

.gitignore에 추가했는데 제대로 무시되는지 확인하고 싶을 때 쓸 수 있는 명령어가 있습니다.

git check-ignore -v <파일이름>
git check-ignore -v .env
.gitignore:1:.env   .env

.gitignore 몇 번째 줄의 어떤 패턴에 걸려서 무시되는지 알려줍니다. 패턴이 여러 개 있을 때 어느 규칙이 적용되는지 확인하기 좋습니다.

무시되지 않는 파일을 넣으면 아무 출력도 나오지 않습니다.


이번 편 정리

패턴 의미
secret.txt 해당 이름의 파일 무시
*.log 확장자가 .log인 모든 파일 무시
dist/ dist 폴더 전체 무시
/config.yml 루트의 config.yml만 무시
!important.log 해당 파일은 예외로 무시하지 않음
명령어 하는 일
git rm --cached <파일> 로컬 파일은 두고 Git 추적만 끊기
git rm --cached -r <폴더> 폴더 전체 추적 끊기
git check-ignore -v <파일> 어떤 규칙에 걸려 무시되는지 확인

핵심

  • .gitignore는 아직 추적되지 않은 파일에만 적용된다.
  • 이미 추적 중인 파일은 git rm --cached로 먼저 추적을 끊어야 한다.

다음 편 예고

작업하다 보면 "이 브랜치는 잠깐 놔두고 다른 브랜치로 급하게 이동해야 하는데, 커밋하기엔 아직 덜 됐다"는 상황이 생깁니다. 다음 편에서는 작업 중인 변경사항을 임시로 저장해두는 git stash를 다룹니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'블로그, 컴퓨터 > DevOps' 카테고리의 다른 글

Git 기초편 8편 — 실수 되돌리기 총정리  (0) 2026.05.11
Git 기초편 7편 — stash, 작업 잠깐 숨기기  (0) 2026.05.11
Git 기초편 5편 — 원격 저장소 연결하기  (0) 2026.05.11
Git 기초편 4편 — merge와 충돌 해결  (0) 2026.05.10
Git 기초편 3편 — git log를 트리로 보는 법  (1) 2026.05.10
'블로그, 컴퓨터/DevOps' 카테고리의 다른 글
  • Git 기초편 8편 — 실수 되돌리기 총정리
  • Git 기초편 7편 — stash, 작업 잠깐 숨기기
  • Git 기초편 5편 — 원격 저장소 연결하기
  • Git 기초편 4편 — merge와 충돌 해결
생각사람
생각사람
지극히 사적인 연구실
  • 생각사람
    생각사람의 별장
    생각사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (207)
      • 금융 (57)
        • 주식 공부 (11)
        • 파생상품 입문 (17)
        • 파생상품 기초 (15)
        • 파생상품 실전 (14)
      • 블로그, 컴퓨터 (83)
        • 프로그래밍 (16)
        • DevOps (8)
        • AI, RL, ML, ... (5)
        • 애드센스, SEO (23)
        • 임베디드 (3)
        • 컴퓨터 관련 (7)
        • Cheatsheets (21)
      • 다른 공부들 (67)
        • 읽고 쓰기 (18)
        • 수학 (15)
        • 물리 (9)
        • 사진 공부 (25)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    스트래들
    CheatSheet
    c++
    프로그래밍
    AI
    github
    version control
    파생상품
    행렬
    GIT
    슈뢰딩거 방정식
    코딩
    선형대수학
    독후감
    오펜하이머
    cmake
    깃
    선물 옵션
    c
    깃허브
    양자역학
    공업수학
    웹크롤러
    구글 애드센스
    옵션
    스트랭글
    소니 a6000
    Kreyszig
    벡터
    옵션 투자
  • hELLO· Designed By정상우.v4.10.6
생각사람
Git 기초편 6편 — .gitignore 제대로 쓰기
상단으로

티스토리툴바