与新的gitignore文件重新同步git回购

更新gitignore文件后,是否可以“刷新”git存储库?

我只是添加更多的ignorations(?)到我的gitignore,并希望删除已经在回购匹配新文件的东西。

“ .gitignore文件不会忽略 ”中提到的解决scheme有点极端,但应该工作:

# rm all files git rm -r --cached . # add all files as per new .gitignore git add . # now, commit for new .gitignore to apply git commit -m ".gitignore is now working" 

确保首先提交您想要保留的更改 ,以避免任何事件,如下面的 jball037 评论 。
--cached选项可以让你的文件不受影响。)

在“ 让Git忽略已经被跟踪的文件 ”的博客文章中,还有其他更加细致的解决scheme:

 git rm --cached `git ls-files -i --exclude-standard` 

Bassim 在他的编辑中build议:

文件的path中有空格

万一你得到一个像fatal: path spec '...' did not match any files的错误信息fatal: path spec '...' did not match any files ,可能是在他们的path中有空格的文件。

您可以使用选项--ignore-unmatch删除所有其他文件:

 git rm --cached --ignore-unmatch `git ls-files -i --exclude-standard` 

但不匹配的文件将保留在您的存储库中,并且必须通过用双引号括起其path来显式删除:

 git rm --cached "<path.to.remaining.file>" 

我可能会误解,但是您是否尝试删除最近被忽略的文件,或者是否要忽略这些文件的新修改? 在这种情况下,事情正在工作。

如果您想删除以前提交的忽略文件,请使用

 git rm –cached `git ls-files -i –exclude-standard` git commit -m 'clean up'