Git is not using the contents of .gitignore

2019-05-04 09:52发布

问题:

I’m working with Rails and added the directory tmp and the Gemfile to my .gitignore. But every time I change it, git status tells me, that it changed. On both machines. On my developer machine and on the server. Kind of annoying.

Contents of .gitignore:

.DS_Store
data/export/*.csv
tmp/*
*.rbc
*.sassc
.sass-cache
capybara-*.html
.rspec
/.bundle 
/vendor/bundle 
/log/* 
/tmp/* 
/db/*.sqlite3 
/public/system/* 
/coverage/ 
/spec/tmp/* 
**.orig 
config/*.yml 
rerun.txt 
pickle-email-*.html 
Gemfile*

回答1:

It could be that git is already tracking the files. Try git rming them:

git rm --cached Gemfile

(although you probably should have the Gemfile under version control)

and for the tmp dir:

git rm -r --cached tmp

the --cached is so that the working file will not be deleted, and -r is to recursively remove from a directory.

After this git should respect .gitignore.



回答2:

If your tmp and GemFile directories are already versioned, Git will not ignore them.

Either unversion them, by doing something like:

git rm -r --cached tmp
git commit -am "removing tmp"

( --cached so that they will remain in your working directory)

, or ignore that they are not ignored ( :) ) or do something like:

git update-index --assume-unchanged tmp/**

The above command "temporarily ignores" the changes to the folders that are already versioned.