【问题标题】:Git ignore not ignoring directoriesGit忽略不忽略目录
【发布时间】:2019-04-23 01:43:57
【问题描述】:

我正在尝试忽略 Visual Studio 项目中的 obj、bin、调试类型文件/目录。我已经听从了这里的建议:

ignoring any 'bin' directory on a git project

这不起作用。

我已将整个 git ignore 粘贴在这里:

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 status,所有文件都显示为“已修改”...

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

【问题讨论】:

    标签: gitignore


    【解决方案1】:

    如果您的文件在添加 .gitignore 之前已经被跟踪并提交,它不会忽略它。您需要将其从索引中删除才能停止跟踪

    用于文件

    git rm --cached <file need to remove>
    

    文件夹

    git rm -r --cached <folder>
    

    所以这对你来说是个问题,因为 Jenkins 仍然能够在 repo 中看到文件

    【讨论】:

    • 是的。但是没有什么可以重置的。工作树很干净。然后我运行程序,所有文件再次显示为已修改。然后我'git checkout'。将它们全部删除。再次回到工作树清洁。然后循环只是重复......
    【解决方案2】:

    你好,看看编辑部分,

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

    git rm -r --cached yourfolder
    

    【讨论】:

      【解决方案3】:

      根据您上面的“编辑 2”,听起来您不认为这些以前已提交,但实际上,它们已提交。如果它显示为“已修改”,则 git 正在识别该文件已从它签入的最后一个版本更改。如果该文件之前尚未提交,那么它将显示为 Untracked。

      当您对这些文件运行 git checkout 时,您是在告诉 git 将这些文件恢复到最后签入 git 的版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        • 2014-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多