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.
It's pronounced Diane. I do data architecture, operations, and backend development. In my spare time I maintain Massive.js, a data mapper for Node.js and PostgreSQL.
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)
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.
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.
I mostly generate mine with joe, I highly recommend it. joe is a cli tool which generates .gitignore files given a list of tools/languages you plan to use.
So for my current project I did joe g java jetbrains vim gradle > .gitignore and I was all set!
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.
I feel like I saw this before, but this is a great resource. Thanks!
When I start a project, I go to this site to create
.gitignore
.Since I'm using JetBrains's IntellIJ IDEA most the time, my
.gitignore
is normally just: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.The first 2/3 or more dates from before I took over the project, so now I'm curious what those regexes are doing...
Looks like a pattern to ignore vim swapfiles
Mine's pretty simple, for my apps.nektro.net project this is it
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.
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)
Why do you need a gitignore for your $HOME?do you use this as a template?
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.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.
A really great approach! You must be a good project collaboration mate.
Cheers!
My Rails 5 app:
From a gem that I made via a plugin generator:
I mostly generate mine with joe, I highly recommend it.
joe
is a cli tool which generates.gitignore
files given a list of tools/languages you plan to use.So for my current project I did
joe g java jetbrains vim gradle > .gitignore
and I was all set!Byte-compiled / optimized / DLL files
pycache/
*.py[cod]
*$py.class
Database files
*.db
C extensions
*.so
Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
PyInstaller
Usually these files are written by a python script from a template
before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
Installer logs
pip-log.txt
pip-delete-this-directory.txt
Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
Translations
*.mo
*.pot
Django stuff:
*.log
.static_storage/
.media/
local_settings.py
Flask stuff:
instance/
.webassets-cache
Scrapy stuff:
.scrapy
Sphinx documentation
docs/_build/
PyBuilder
target/
Jupyter Notebook
.ipynb_checkpoints
pyenv
.python-version
celery beat schedule file
celerybeat-schedule
SageMath parsed files
*.sage.py
Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
Spyder project settings
.spyderproject
.spyproject
Rope project settings
.ropeproject
mkdocs documentation
/site
mypy
.mypy_cache/
I'm using gitignore.io, like below (when I write Go):
gi
is wrapper function, written in gitignore.io 's document.gitignore.io just type the kind of project/tool and it generate the "perfect" gitignore for you
Check out this tool: gitignore.io/ 🦄
/public/