Make .gitignore ignore everything except a few files


I understand that a .gitignore file cloaks specified files from Git's version control.

How do I tell .gitignore to ignore everything except the files I'm tracking with Git? Something like:

# Ignore everything:

Do not ignore these files: template.latex


An optional prefix ! which negates the pattern; any matching file excluded by a previous pattern will become included again. If a negated pattern matches, this will override lower precedence patterns sources.

# Ignore everything

But not these files…

!.gitignore ! !template.latex


…even if they are in subdirectories


if the files to be tracked are in subdirectories

!/a/b/file1.txt !/a/b/c/*

Difference between Git and GitHub

Recursively add the entire folder to a repository