如何在Git GUI中忽略文件?

21
我已在.git文件夹所在的文件夹中创建了一个.gitignore文件,但在重新扫描仓库时,我仍然会得到我试图忽略的文件。
这是文件的内容。
# Ignored files
*.suo 
*.user 
bin 
obj 
*.pdb 
*.cache 
*_svn 
*.svn 
*.suo 
*.user 
*.build-res 
TestResults 
_ReSharper*

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

6个回答

13

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

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


7
您的文件看起来很好。只需确保每行开头没有任何空格,我花了4个小时才找到为什么我的.gitignore文件不能正确工作的原因; 原因当然是一个剪切和粘贴问题,在文件开头有一条垂直线的空格。
在确保您的.gitignore文件真正清除所有不需要的内容之前,您应该谨慎使用“git commit -a”。使用“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 status只列出你真正想添加到仓库的文件之前,不要运行git add .
另一个在使用通配符时非常有用的git功能是它不需要文件路径。如果你列出被忽略的文件并发现你想要删除所有的*.suo*.log文件,只需运行:
git rm --cached *.suo *.log

Git会查找存储库中所有符合该签名的文件,无论这些文件在树形结构的哪个位置。


3

我尝试了多种方法来使其工作,最终发现很简单:

你必须首先提交 .gitignore 文件!

另外,如果你使用 TortoiseGIT - GitEx Commit 工具,则有一个选项可以编辑被忽略的文件。


1

你定位正确。.gitignore应该与.git文件夹位于同一文件夹中。文件内部看起来也是正确的。但是,我在顶部没有注释行。


0

看到这个,我会认为你忘记提交你的忽略文件了。


0

对我来说,没有任何--rm缓存解决方案可用。该文件需要编码为ASCII/ANSI。我也更改了行尾,但仅仅这样还不够。我找不到原始帖子的网址(抱歉,原始发布者!),但是以下方法对我有效:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接