21

我在带有 .git 文件夹的文件夹中创建了一个 .gitignore 文件,但是在重新扫描存储库时,我仍然得到了我试图忽略的文件。

这是文件的内容。

# Ignored files
*.suo 
*.user 
bin 
obj 
*.pdb 
*.cache 
*_svn 
*.svn 
*.suo 
*.user 
*.build-res 
TestResults 
_ReSharper*

我究竟做错了什么?文件应该在哪里?

4

6 回答 6

13

您需要确保您仍然看到的文件当前未提交或暂存。

如果您删除它们(git rmgit rm --cached),然后将它们添加为私有文件,那么它们将被忽略。

于 2010-02-23T14:55:27.097 回答
6

你的文件看起来不错。只要确保每行的开头没有任何空格,我花了 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 负责查找存储库中与该签名匹配的所有文件,无论它们在树中的哪个位置。

于 2011-10-10T12:34:35.140 回答
3

我尝试了多种方法来让它工作,最后很简单:

您必须先提交 .gitignore!

此外,如果您使用 TortoiseGIT - GitEx 提交工具,则可以选择编辑被忽略的文件。

于 2013-04-09T19:08:57.390 回答
1

你定位正确。.gitignore 应该在同一个文件夹中,即 .git 文件夹所在的位置。里面的文件看起来也正确。但是,我在顶部没有评论行..

于 2010-02-23T14:55:18.713 回答
0

当我看到这个时,我想你忘了提交你的忽略文件。

于 2012-11-29T17:46:43.363 回答
0

--rm 缓存的解决方案都不适合我。该文件需要编码为 ASCII/ANSI。我也更改了行尾,但仅此一项并不能解决问题。我找不到包含这些说明的网址(对不起,原始海报!)但这对我有用:

  1. 如果您还没有 Notepad++,请安装它。文本板也应该可以工作,但我使用记事本++。
  2. 用 Notepad++ 打开你的 .gitignore。
  3. 点击查看 | 显示符号 | 显示所有字符。您可能会在每行的末尾看到 CR LF。
  4. 进行搜索和替换(ctrl+h),确保选中扩展(下放手角)。搜索 \r\n 并替换为 \n。你会看到所有的 CR LF 都变成了 LF。
  5. 现在点击编码 | 以 ANSI 编码。
  6. 保存文件并退出。

从 windows 中的命令提示符或 git 命令提示符,无论您喜欢哪个,当您执行 git status 时,它不应该显示 .gitignore 中的文件。

于 2016-08-24T14:54:40.320 回答