콘텐츠로 건너뛰기

📦 .gitignore / .dockerignore 생성기

언어 (Node / Python / Go / Rust / Java / PHP / Ruby) / 프레임워크 (React / Next.js / Django / Rails / Laravel) / IDE (VSCode / JetBrains / Vim) / OS (macOS / Windows / Linux) 프리셋을 결합하여 .gitignore 또는 .dockerignore 를 즉시 생성. 중복 제거 · 주석 유지 · 실시간 미리보기 · 복사 / 다운로드.

완전 무료 가입 불필요 브라우저 완결 5 개 언어 다크 모드

📝 .gitignore (미리보기)

# 프리셋을 1개 이상 선택하세요

📖 자주 걸리는 지점

언어·프레임워크·IDE·OS 의 프리셋을 겹쳐 .gitignore 또는 .dockerignore 를 생성합니다. 중복 행은 빼고 주석은 남깁니다. 처리는 브라우저 안에서 끝납니다. 다만 .gitignore 는 「앞으로 추가될 파일」에만 듣습니다이미 Git 이 추적하고 있는 파일은 무엇을 써도 무시되지 않습니다. 그리고 가장 흔한 오해가 여기에 있습니다: .env 를 커밋한 뒤 .gitignore 에 더해도 리포지터리에서도 이력에서도 사라지지 않습니다. 무시하는 것과 없었던 일로 하는 것은 다릅니다.

사례 무슨 일이 일어나는가 어떻게 하면 되는가
이미 추적 중인 파일에는 듣지 않는다 Git 은 추적 대상이 된 시점에 .gitignore 를 참조하지 않게 됩니다. 따라서 한 번 커밋한 .env·node_modules·빌드 산출물은 나중에 규칙을 더해도 차분에 계속 나옵니다. 그리고 진짜 문제는 눈앞의 작업 디렉터리가 아니라 이력입니다git rm --cached 로 추적을 빼도 과거 커밋의 내용은 사라지지 않습니다. git log -p 를 치면 누구나 읽을 수 있고, 이미 push 했다면 fork·미러·CI 의 캐시·각종 클론에도 같은 것이 남아 있습니다. 공개 리포지터리라면 기계적으로 키를 수집하는 스캐너가 몇 분 만에 찾아냅니다실제로 공개 직후 유출된 키가 악용되기까지의 시간은 분 단위로 관측되고 있습니다. 먼저 추적을 뺍니다: git rm --cached .env 를 실행하고 .gitignore 추가와 함께 커밋하세요 (--cached 를 붙이지 않으면 파일 자체가 사라집니다). 디렉터리라면 -r 을 더합니다. 그리고 기밀이 포함되어 있었다면 대처는 단 하나입니다: 그 키를 로테이션하세요. 이력의 재작성 (git filter-repo) 은 가능하지만 그것을 유일한 대책으로 삼지 마세요전원이 clone 을 다시 만들어야 하고, 게다가 남의 fork 나 이미 push 된 오브젝트에는 손이 닿지 않습니다. 예방이 압도적으로 저렴합니다: git add 전에 git status 를 읽는 습관gitleaksgit-secrets 를 pre-commit 훅에 넣는 것입니다.
.gitignore 를 그대로 .dockerignore 로 삼는다 이 둘은 형식이 같고 목적이 다릅니다. .gitignore버전 관리에서 빼는 것을 쓰고 .dockerignore빌드 컨텍스트에 보내지 않을 것을 씁니다. 그대로 돌려쓰면 두 방향으로 망가집니다. 빌드에 필요한 것을 제외해 버립니다dist/.gitignore 에서는 올바른 제외지만 사전 빌드한 산출물을 COPY 하는 Dockerfile 에서는 필수 디렉터리입니다. 반대로 제외해야 할 것이 남습니다.git/node_modules/ 를 제외하지 않으면 컨텍스트가 수백 MB 가 되어 빌드가 눈에 띄게 느려집니다. 게다가 호스트에서 설치한 node_modules 가 이미지에 들어가면 플랫폼이 다른 네이티브 모듈이 섞여 실행 시에 죽습니다. 둘을 따로 쓰세요. .dockerignore「이미지 빌드에 필요한 것만 통과시킨다」는 발상으로 만들면 빗나가지 않습니다 — 최소한 .git·node_modules·.env·*.log·테스트·문서·CI 설정을 떨어뜨립니다. .env 는 반드시 넣으세요컨텍스트에 들어가면 COPY . . 로 이미지에 구워지고 이미지를 배포한 상대 전원이 읽을 수 있습니다. 효과 확인은 간단해서 docker build 처음에 나오는 컨텍스트 전송량을 봅니다수 MB 이하로 들어가면 적절합니다. 그리고 .dockerignore 는 빌드 컨텍스트의 기점에만 놓을 수 있습니다서브디렉터리에 두어도 읽히지 않습니다.
패턴이 생각한 곳에 걸리지 않는다 쓰는 방식의 세부에 따라 의미가 달라집니다. 슬래시를 포함하지 않는 build 는 어느 계층에 있는 build 에도 걸립니다. 앞에 슬래시를 붙인 /build 는 루트 바로 아래만, 끝에 슬래시를 붙인 build/ 는 디렉터리만입니다. 가장 알기 어려운 것이 제외의 취소 (!) 로, 부모 디렉터리를 제외하고 있으면 그 안의 파일을 ! 로 되돌릴 수 없습니다Git 은 제외된 디렉터리의 내용을 훑지 않으므로 거기에 쓴 규칙은 읽히지도 않습니다. node_modules/!node_modules/mylib 를 나란히 써도 후자는 아무 일도 일으키지 않습니다. 오류도 경고도 나오지 않으므로 「썼는데 안 듣는다」는 형태로만 나타납니다. 망설여지면 git check-ignore -v <경로> 를 실행하세요. 어느 파일의 몇 번째 줄 규칙이 걸렸는지를 한 줄로 표시합니다이 명령을 아느냐 모르느냐로 조사 시간이 자릿수 단위로 달라집니다. 아무것도 출력되지 않으면 그 경로는 무시되고 있지 않습니다. 디렉터리 안의 하나만 되돌리고 싶을 때는 디렉터리째가 아니라 내용을 제외하세요: node_modules/* 라고 쓴 뒤 !node_modules/mylib 를 나란히 쓰면 의도대로 동작합니다. 프리셋을 겹치면 행 수가 늘지만 양 자체는 문제가 되지 않습니다문제가 되는 것은 「왜 이 행이 있는지 모르겠다」는 상태이므로 프로젝트 고유의 행은 주석을 달아 끝에 모아 두세요.

무시 설정은 한 곳이 아닙니다. Git 은 리포지터리의 .gitignore·서브디렉터리의 .gitignore·.git/info/exclude·글로벌 설정 (core.excludesFile) 을 순서대로 봅니다. 여기서의 구분에는 명확한 기준이 있습니다: 그 프로젝트의 누구에게나 불필요한 것 (빌드 산출물·의존 디렉터리) 은 리포지터리의 .gitignore, 당신 환경만의 사정 (에디터 설정·OS 가 만드는 파일·개인적인 메모) 은 글로벌 설정으로 넣으세요. .DS_StoreThumbs.db.idea/ 를 리포지터리의 .gitignore 에 쓰는 것은 엄밀히는 남에게 자기 환경을 강요하는 셈입니다 — 다만 현실에서는 모두가 하고 있으므로 팀에서 맞추는 편이 마찰이 적은 것도 사실입니다. 마지막으로 빈 디렉터리는 Git 이 추적하지 않습니다logs/ 같은 빈 디렉터리를 남기고 싶다면 logs/.gitkeep 이라는 빈 파일을 두세요 (.gitkeep 은 Git 의 기능이 아니라 그저 관습적인 파일 이름입니다).

📖 사용법

  1. 1
    모드 선택
    .gitignore 또는 .dockerignore 모드 선택. .dockerignore 는 이미지 비대화 방지 패턴 (node_modules / .git / *.log) 포함.
  2. 2
    스택 선택
    언어 / 프레임워크 / IDE / OS 칩 선택. 다중 선택 시 자동 병합 + 중복 제거.
  3. 3
    복사 또는 다운로드
    복사 또는 .gitignore/.dockerignore 파일명으로 다운로드 가능.

❓ 자주 묻는 질문

.gitignore 와 .dockerignore 차이?
.gitignore = Git 추적 제외, .dockerignore = Docker build context 제외. .dockerignore 는 image 비대화 방지를 위해 node_modules / .git / *.log 우선 포함.
기존 파일에 추가 가능?
예. 기존 파일 끝에 붙이거나 sort -u 로 중복 제거.
github/gitignore 와 차이는?
github/gitignore 는 단일 스택 완전 템플릿. 본 도구는 핵심 라인만 다중 스택 병합.
프리셋 추가 요청
피드백 폼으로 스택명을 보내주세요. 수요가 많으면 추가합니다.
🐛 이 도구에서 문제가 발생했나요?

무료 · 가입 불필요. 재현 절차만이라도 도움이 됩니다. 보고는 운영자에게 직접 전달되어 개선에 사용됩니다.

※ 재현을 위해 브라우저 정보 (UA / 화면 / 언어 / URL) 가 자동 전송됩니다