我在带有 .git 文件夹的文件夹中创建了一个 .gitignore 文件,但是在重新扫描存储库时,我仍然得到了我试图忽略的文件。
这是文件的内容。
# Ignored files
*.suo
*.user
bin
obj
*.pdb
*.cache
*_svn
*.svn
*.suo
*.user
*.build-res
TestResults
_ReSharper*
我究竟做错了什么?文件应该在哪里?
您需要确保您仍然看到的文件当前未提交或暂存。
如果您删除它们(git rm
或git rm --cached
),然后将它们添加为私有文件,那么它们将被忽略。
你的文件看起来不错。只要确保每行的开头没有任何空格,我花了 4 个小时才找到我的 .gitignore 无法正常工作的原因;原因当然是剪切粘贴问题,我在文件开头有一条垂直的空格线。
git commit -a
在确保您的 .gitignore 文件确实清除了您不想要的所有内容之前,您应该小心。使用或标记每个文件(或使用通配符)git add *.cpp *.h
- 就像我喜欢的那样 - 随着你的进步开发你的 .gitignore ,并git status
在提交之前始终检查。
如果您想仔细检查您的 .gitignore 是否真的有效,请尝试
git ls-files --others -i --exclude-standard
这应该列出您当前忽略的所有文件。
要清除您已经添加的文件(可能使用git add .
,我们在开始时都会犯的错误 =]),您可以像@VonC所说的那样:要么运行
git rm <filename>
或者
git rm --cached <filename>
清除您无意添加的所有文件的另一种选择是完全清除您的存储库,然后再次重新添加所有内容。如果要清除暂存区域中的所有内容,可以运行
git --rm cached .
但请记住不要运行,git add .
直到您确保 git status 仅列出存储库中您真正想要的文件。
git 的另一个非常有用的事情是它在使用通配符时不需要文件路径。*.suo
如果您列出忽略的文件并看到要删除所有*.log
文件,只需运行
git rm --cached *.suo *.log
并且 git 负责查找存储库中与该签名匹配的所有文件,无论它们在树中的哪个位置。
我尝试了多种方法来让它工作,最后很简单:
您必须先提交 .gitignore!
此外,如果您使用 TortoiseGIT - GitEx 提交工具,则可以选择编辑被忽略的文件。
你定位正确。.gitignore 应该在同一个文件夹中,即 .git 文件夹所在的位置。里面的文件看起来也正确。但是,我在顶部没有评论行..
当我看到这个时,我想你忘了提交你的忽略文件。
--rm 缓存的解决方案都不适合我。该文件需要编码为 ASCII/ANSI。我也更改了行尾,但仅此一项并不能解决问题。我找不到包含这些说明的网址(对不起,原始海报!)但这对我有用:
从 windows 中的命令提示符或 git 命令提示符,无论您喜欢哪个,当您执行 git status 时,它不应该显示 .gitignore 中的文件。