# .gitignore Templates for Common Programming Languages ## Universal .gitignore (Good for any project) ```gitignore # Operating System Files .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db # Editor Files .vscode/ .idea/ *.swp *.swo *~ .project .classpath .settings/ # Log Files *.log logs/ log/ # Environment Files .env .env.local .env.development .env.test .env.production .env.staging *.secret config.local.js # Temporary Files *.tmp *.temp temp/ tmp/ *.bak *.backup # Archive Files *.zip *.tar.gz *.rar *.7z # System Files desktop.ini ``` ## Python Projects ```gitignore # Universal files first (copy from above) # Python-specific __pycache__/ *.py[cod] *$py.class *.so .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # Virtual environments venv/ env/ ENV/ env.bak/ venv.bak/ .virtualenv # Conda .conda/ # Django *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask instance/ .webassets-cache # Scrapy .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Celery celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject ``` ## JavaScript/Node.js Projects ```gitignore # Universal files first (copy from above) # Dependencies node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* # Runtime data pids *.pid *.seed *.pid.lock # Coverage directory used by tools like istanbul coverage/ *.lcov # nyc test coverage .nyc_output # Grunt intermediate storage .grunt # Bower dependency directory bower_components # node-waf configuration .lock-wscript # Compiled binary addons build/Release # Dependency directories jspm_packages/ # Snowpack dependency directory web_modules/ # TypeScript cache *.tsbuildinfo # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Optional stylelint cache .stylelintcache # Microbundle cache .rpt2_cache/ .rts2_cache_cjs/ .rts2_cache_es/ .rts2_cache_umd/ # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # parcel-bundler cache .cache .parcel-cache # Next.js build output .next out # Nuxt.js build / generate output .nuxt dist # Gatsby files .cache/ public # Storybook build outputs .out .storybook-out # Temporary folders .tmp # React build/ # Vue.js dist/ # Webpack .webpack/ # Babel .babel_cache/ ``` ## Java Projects ```gitignore # Universal files first (copy from above) # Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar # virtual machine crash logs hs_err_pid* # Maven target/ pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties .mvn/wrapper/maven-wrapper.jar # Gradle .gradle build/ !gradle/wrapper/gradle-wrapper.jar !**/src/main/**/build/ !**/src/test/**/build/ # IntelliJ IDEA .idea/ *.iws *.iml *.ipr out/ !**/src/main/**/out/ !**/src/test/**/out/ # Eclipse .apt_generated .classpath .factorypath .project .settings .springBeans .sts4-cache bin/ !**/src/main/**/bin/ !**/src/test/**/bin/ # NetBeans /nbproject/private/ /nbbuild/ /dist/ /nbdist/ /.nb-gradle/ # VS Code .vscode/ # Spring Boot spring-boot-*.log ``` ## C/C++ Projects ```gitignore # Universal files first (copy from above) # Prerequisites *.d # Object files *.o *.ko *.obj *.elf # Linker output *.ilk *.map *.exp # Precompiled Headers *.gch *.pch # Libraries *.lib *.a *.la *.lo *.dll *.so *.so.* *.dylib # Executables *.exe *.out *.app *.i*86 *.x86_64 *.hex # Debug files *.dSYM/ *.su *.idb *.pdb # Kernel Module Compile Results *.mod* *.cmd .tmp_versions/ modules.order Module.symvers Mkfile.old dkms.conf # CMake CMakeLists.txt.user CMakeCache.txt CMakeFiles CMakeScripts Testing Makefile cmake_install.cmake install_manifest.txt compile_commands.json CTestTestfile.cmake _deps # Build directories build/ debug/ release/ ``` ## Go Projects ```gitignore # Universal files first (copy from above) # Binaries for programs and plugins *.exe *.exe~ *.dll *.so *.dylib # Test binary, built with `go test -c` *.test # Output of the go coverage tool *.out # Dependency directories vendor/ # Go workspace file go.work go.work.sum # Build output bin/ pkg/ dist/ # Air (live reload) tmp/ # GoLand .idea/ # VS Code Go extension .vscode/ ``` ## Web Development (HTML/CSS/JS) ```gitignore # Universal files first (copy from above) # Sass .sass-cache/ *.css.map *.sass.map *.scss.map # Less *.css.map # Bundle files bundle.js bundle.css # Compiled CSS from preprocessors *.compiled.css # npm/yarn node_modules/ package-lock.json yarn.lock # Webpack dist/ .webpack/ # Parcel .cache/ .parcel-cache/ # Build tools .grunt/ .gulp/ # Static site generators _site/ .jekyll-cache/ .jekyll-metadata # PWA sw.js workbox-*.js ``` ## Docker Projects ```gitignore # Universal files first (copy from above) # Docker .dockerignore docker-compose.override.yml .docker/ # Container runtime files *.pid *.log # Docker volumes data/ volumes/ ``` ## Recommended Usage Instructions 1. **Start with Universal**: Always begin with the universal .gitignore section 2. **Add Language-Specific**: Append the appropriate language-specific section 3. **Customize for Your Project**: Add any project-specific files or directories 4. **Keep It Updated**: Review and update your .gitignore as your project evolves ## Creating .gitignore Files ### Method 1: Manual Creation ```bash # Navigate to your project root cd your-project # Create .gitignore file touch .gitignore # Edit with your preferred editor nano .gitignore # or code .gitignore for VS Code ``` ### Method 2: Use gitignore.io Visit https://gitignore.io and generate custom .gitignore files for your stack. ### Method 3: GitHub Templates When creating a repository in Gitea, you can initialize with a .gitignore template for common languages. ## Tips for .gitignore Management 1. **Add .gitignore early**: Create it before your first commit 2. **Test your patterns**: Use `git status` to verify files are being ignored 3. **Use comments**: Document why certain patterns are included 4. **Be specific**: Avoid overly broad patterns that might exclude needed files 5. **Global gitignore**: Consider setting up a global .gitignore for OS-specific files ### Setting up Global .gitignore ```bash # Create global gitignore file git config --global core.excludesfile ~/.gitignore_global # Add common files to global ignore echo ".DS_Store" >> ~/.gitignore_global echo "Thumbs.db" >> ~/.gitignore_global echo "*.log" >> ~/.gitignore_global ```