DEV Community

Maximilian Koch
Maximilian Koch

Posted on

Show me your .gitignore

The .gitignore file exists in almost every of our projects, but even across similar projects the .gitignore always looks different.

Cheers

Top comments (22)

Collapse
 
rhymes profile image
rhymes

Every time I start a new project I just download a .gitignore from Github/gitignore

Recently I found out there's a VSCode extension which does that for me.

Collapse
 
pmcgowan profile image
p-mcgowan

I feel like I saw this before, but this is a great resource. Thanks!

Collapse
 
vancanhuit profile image
Đinh Văn Cảnh

When I start a project, I go to this site to create .gitignore.

Collapse
 
chrisvasqm profile image
Christian Vasquez • Edited

Since I'm using JetBrains's IntellIJ IDEA most the time, my .gitignore is normally just:

.idea/
*.iml

This makes sure I'm not committing any IDE generated files on my Java/Kotlin projects.

For those who might not be familiar with the *.iml, it tells Git to ignore any files names that end on .iml. This can be done to any kind of files too.

Collapse
 
dmfay profile image
Dian Fay
.DS_Store
lib-cov
*.seed
*.log
*.csv
*.dat
*.out
*.pid
node_modules
.directory
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
Session.vim
play.js
coverage
out
.nyc_output
docs/_site
docs/.sass-cache
.vscode

The first 2/3 or more dates from before I took over the project, so now I'm curious what those regexes are doing...

Collapse
 
vpzomtrrfrt profile image
VpzomTrrfrt

Looks like a pattern to ignore vim swapfiles

Collapse
 
ben profile image
Ben Halpern
# Ignore bundler config.
/.bundle

# Ignore all logfiles and tempfiles.
/log/*
!/log/.keep
/tmp
.DS_Store
.swp
.approvals
.torus.json
coverage
/tags

#Ignore public uploads
/public/uploads/*
/public/c/*
/public/i/*
/public/assets/*

#Ignore node_modules
node_modules/

# Generated js bundles
/app/assets/javascripts/generated/*
latest.dump
.byebug_history

# Ignore application configuration
/config/application.yml
/public/packs
/public/packs-test
/node_modules
Collapse
 
nektro profile image
Meghan (she/her) • Edited

Mine's pretty simple, for my apps.nektro.net project this is it

/node_modules/
/bin/
Collapse
 
ycmjason profile image
YCM Jason

Can I do a promote a tool here for those who like building random projects?

npmjs.com/package/gitignorer

It is a tool that allow you to init gitignore file easily given a default profile.

Collapse
 
pmcgowan profile image
p-mcgowan

gitignore

Gitignore for my $HOME directory (inverse of the usual, ignore everything except some files) and a typical project (with a bunch of project specific files)

Collapse
 
tadaboody profile image
Tomer

Why do you need a gitignore for your $HOME?do you use this as a template?

Collapse
 
pmcgowan profile image
p-mcgowan • Edited

For provisioning and syncing between computers. I keep my $HOME directory in source control, just the files listed there (probably unwise to store .ssh in source control). Since I use the same settings (bashrc, bash_aliases, vim settings) between my desktop, laptop, server, and phone, I keep these in source control.

This also means that if I want to do a clean upgrade (complete reinstall without keeping junk) I can quickly get a new setup and I'm up and running. I only do this once a year or so, but on several different computers it just makes the process easier.

I also have a separate .config in source control (see below), since my phone doesn't need that, and a headless server wouldn't need the same GUI config files.

This is also useful for keeping productivity tools, scripts, settings all in one place. The company I worked for before set me up with a laptop so it was just a matter of installing git and running a couple commands to optimize my workflow.

I used to only have one for ~/bin, since I have a few hundred bash scripts in there (only use about 20 regularly), but I soon expanded to most of my home directory after a few reinstalls.

*
!.gitignore
!user-dirs.dirs
!gtk-3.0/
!gtk-3.0/**/*
!google-chrome/
!google-chrome/Default/
!google-chrome/Default/Bookmarks
!mc/
!mc/**/*
!sublime-text-3/
!sublime-text-3/Packages/
!sublime-text-3/Packages/User/
!sublime-text-3/Packages/User/**/*
Collapse
 
ghost profile image
Ghost

I like to have two .gitignore, one for me (a global one), and one for the project that I'm working on.

In my global gitignore, named .gitexcludes(github.com/diegoholiveira/dotfiles...), I ignore files that are generated by my own environment, like IDEs files, vagrant files and others.

In my projects, my .gitignore only have entries that are directly about the project: like build files, pyc files and vendor folder, generated files and other.

This helps me to keep things very organized.

Collapse
 
oleksiyrudenko profile image
Oleksiy Rudenko

A really great approach! You must be a good project collaboration mate.
Cheers!

Collapse
 
briankephart profile image
Brian Kephart

My Rails 5 app:

# Ignore bundler config.
/.bundle

# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep

# Ignore Byebug command history file.
.byebug_history

# Ignore environment file
.env

# Ignore locally compiled assets and local media
/public/assets/*
/public/media/*
/node_modules/

# Ignore Redis writes to disk
/dump.rdb

# Ignore Docker config
/docker-compose.yml
/Dockerfile

# Ignore local Webpack files
/public/packs
/public/packs-test
/node_modules

# Ignore master key for decrypting credentials and more.
/config/master.key

From a gem that I made via a plugin generator:

.bundle/
log/*.log
pkg/
test/dummy/db/*.sqlite3
test/dummy/db/*.sqlite3-journal
test/dummy/log/*.log
test/dummy/tmp/
camaleon_sitemap_customizer*.gem