我在.git文件夹的文件夹中创建了一个.gitignore文件, 但是在重新扫描存储库时,我仍然会得到我试图忽略的文件。
这是文件的内容。
# Ignored files
*.suo
*.user
bin
obj
*.pdb
*.cache
*_svn
*.svn
*.suo
*.user
*.build-res
TestResults
_ReSharper*
我做错了什么?假设文件位于何处?
答案 0 :(得分:13)
您需要确保您仍然看到的文件当前未提交或暂存。
如果您删除它们(git rm
或git rm --cached
),然后将它们添加为私人文件,则会忽略它们。
答案 1 :(得分:6)
你的档案看起来不错。只要确保你在每行的开头都没有任何空格,我花了4个小时才找到为什么我的.gitignore工作不正常;原因当然是cut'n'paste问题,我在文件的开头有一个垂直的空格行。
在确保您的.gitignore文件真正清除您不想要的所有内容之前,您应该小心git commit -a
。使用git add *.cpp *.h
标记每个文件(或使用通配符),或者 - 比如我更喜欢 - 在进度时开发.gitignore,并在提交之前始终使用git status
进行检查。
如果您想仔细检查您的.gitignore是否真的有效,try
git ls-files --others -i --exclude-standard
这应列出您当前忽略的所有文件。
要清除你已经添加的文件(可能使用git add .
,我们在开头犯了一个错误=])你可以这样做@VonC说:
要么运行
git rm <filename>
或
git rm --cached <filename>
清除您无意中添加的所有文件的另一个选择是彻底清理您的存储库,然后重新添加所有内容。如果您想清除暂存区域中的所有内容,you can run
git --rm cached .
但请记住不要运行git add .
直到你确定git status只列出你真正想要的文件库。
git的另一个非常有用的功能是它在使用通配符时不需要文件路径。如果您列出了被忽略的文件,并且发现要删除所有*.suo
和*.log
文件,请运行
git rm --cached *.suo *.log
和git负责查找存储库中与该签名匹配的所有文件,无论它们在树中的哪个位置。
答案 2 :(得分:2)
我尝试了多种方法让它工作,最后很简单:
您必须先提交.gitignore!
另外,如果您使用TortoiseGIT - GitEx提交工具,则可以选择编辑被忽略的文件。
答案 3 :(得分:1)
您找对了。 .gitignore应该位于同一个文件夹中,其中.git文件夹位于。里面的文件也看起来正确。但是,我顶部没有评论专栏..
答案 4 :(得分:0)
当我看到这个时,我会认为你忘了提交你的忽略文件。
答案 5 :(得分:0)
没有一个--rm缓存解决方案适合我。该文件需要编码为ASCII / ANSI。我也改变了行结尾,但仅此一点并没有修复它。我找不到有这些说明的网址(抱歉,原创海报!)但这对我有用:
从windows或git命令提示符的命令提示符中,无论你喜欢什么,当你执行git status时,它不应该在.gitignore中显示文件。