git忽略不忽略目录

时间:2019-04-22 06:34:28

标签: gitignore

我正在尝试忽略Visual Studio项目中的obj,bin,调试类型文件/目录。我遵循了这里的建议:

ignoring any 'bin' directory on a git project

这不起作用。

我在此处粘贴了整个git忽略项:

https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

这不起作用。

我尝试了各种各样的事情...

bin/
obj/
*bin/
*obj/
/bin/
/obj/
packages
MyProject/MyProject/obj/
MyProject/MyProject/bin/Debug/
MyProject/MyProject/obj/*
MyProject/MyProject/bin/Debug/*

运行git add时仍包含目录及其文件。 .gitignore文件已添加并提交。我在做什么错了??

编辑:我要忽略的文件尚未被跟踪。当我运行“ git status”时,没有任何待处理的更改。 “什么也没做,工作树很干净”。然后,我运行我的VS程序,该程序会修改那些文件夹中的文件。然后我运行另一个git状态,所有文件都显示为“已修改” ...

EDIT2:文件是否已经存在有关系吗?它们不会被跟踪,但确实存在于文件夹结构中。当我运行程序时,它们再次显示为“已修改”。然后,我必须运行“ git checkout”。删除所有。然后循环重复...

3 个答案:

答案 0 :(得分:2)

如果在添加.gitignore之前已经对文件进行了跟踪和提交,则不会忽略它。您需要将其从索引中删除以停止跟踪

对于文件

git rm --cached <file need to remove>

对于文件夹

git rm -r --cached <folder>

因此,在您的情况下,这将是一个问题,因为Jenkins仍然可以在存储库中查看文件

答案 1 :(得分:1)

嗨,看看编辑部分,

如果您的git索引中已经有不再希望跟踪的文件夹,则需要明确删除它们。 Git不会仅仅因为它们现在匹配新的.gitignore模式而停止跟踪已经被跟踪的路径。递归地(-r)仅从索引(--cached)执行文件夹删除(rm)。

git rm -r --cached yourfolder

答案 2 :(得分:0)

根据上面的“编辑2”,听起来您好像不认为这些是以前提交的,但实际上是这样的。如果显示为“已修改”,则git正在识别该文件已从其检入的上一个版本进行了更改。如果该文件以前尚未提交,则将显示为“未跟踪”。

在这些文件上运行git checkout时,是在告诉git将这些文件还原回签入git的最后一个版本。