How to make Git ignore files that already exist in your project
For a project I’m working on, I had to change some files with personal settings, and the files kept showing up with a git status
.
Adding files to .gitignore that are already tracked does not work. (and it’s actually pretty well documented in the documentation). In stead, it’s possible to use this command:
git update-index --assume-unchanged [filename(s)]
From git-update-index manual page:
--assume-unchanged --no-assume-unchanged
When these flags are specified, the object names recorded for the paths are not updated. Instead, these options set and unset the “assume unchanged” bit for the paths.
When the “assume unchanged” bit is on, git stops checking the working tree files for possible modifications, so you need to manually unset the bit to tell git when you change the working tree file. This is sometimes helpful when working with a big project on a filesystem that has very slow lstat(2) system call (e.g. cifs).
Fantastic! my system files are now ignored by git :)
It’s an incredibly useful tip for example if you have files that MUST live in the repository and that servers/editors change. In this particular project, Tomcat keeps changing two files. Furthermore I have changed the log-level from INFO to WARN which I should not commit into the repository.
git update-index --assume-unchanged
lets me do exactly that.
November 11th, 2010 at 05:19 (GMT-1)
[…] I made changes to some config files for dev purposes. And I didn’t want to commit that back into git. The problem is that .gitignore and .git/info/exclude don’t work on a file already in the repository. So after googling a bit, I found a way to do this here: http://justaddwater.dk/2009/12/07/how-to-make-git-ignore-files-that-already-exist-in-your-project/ […]
September 19th, 2011 at 17:00 (GMT-1)
for followers:
$ git update-index –assume-unchanged source_code/PushSource.vxcproj
fatal: Unable to mark file source_code/PushSource.vxcproj
meant “that file doesn’t exist”
December 1st, 2011 at 22:01 (GMT-1)
Perfect!
Worked well for existing files, is it possible for newly created files not yet in the repo… and not required (such as cache files)?
Thank you for the tip :)
December 22nd, 2011 at 04:54 (GMT-1)
EduBoris, if the file is not being tracked by git yet, just add it on .gitignore file. Thanks for this tip!
June 14th, 2012 at 22:53 (GMT-1)
Thanks! Just what I was looking for.