Today I wanted to ignore some files locally while not dirtying the .gitignore file to avoid it appearing as a stageable change while running git status.

Possible solutions are explained in this Stackoverflow thread but are shown here verbatim:

Do not forget, according to gitignore, that there is an order of > precedence in the different “ignore pattern sources” that Git consider:

• Patterns read from the command line for those commands that support them.
• Patterns read from a .gitignore file in the same directory as the path, > or in any parent directory, with patterns in the higher level files (up to > the root) being overridden by those in lower level files down to the > directory containing the file.
• Patterns read from $GIT_DIR/info/exclude. • Patterns read from the file specified by the configuration variable > core.excludesfile. The last two can be a solution for your problem but: • they are not replicated for a distant repository • they can have their patterns overridden by the other sources (See also this SO question) The other two solutions involve updating the index (git update-index> ): However, when you checkout another branch or when you git pull, that > “ignore” status might be reset. Hence the other option: • git update-index --skip-worktree; see: The difference between the two is explained in “Git - Difference Between > ‘assume-unchanged’ and ‘skip-worktree”. I ended up using the $GIT_DIR/info/exclude option.