git在添加到.gitignore后仍显示已修改的文件

git在添加到.gitignore后仍显示已修改的文件,git,gitignore,Git,Gitignore,我正在将此添加到.gitignore文件中 .idea/* 但无论如何,情况是: # modified: .gitignore # modified: .idea/.generators # modified: .idea/dovezu.iml # modified: .idea/misc.xml # modified: .idea/workspace.xml 我做错了什么? 我甚至把.idea/*添加到了glo

我正在将此添加到.gitignore文件中

.idea/*
但无论如何,情况是:

#       modified:   .gitignore
#       modified:   .idea/.generators
#       modified:   .idea/dovezu.iml
#       modified:   .idea/misc.xml
#       modified:   .idea/workspace.xml
我做错了什么? 我甚至把.idea/*添加到了global~/.gitignore\u global 但是git状态,无论如何,告诉我:

#       modified:   .gitignore
#       modified:   .idea/.generators
#       modified:   .idea/dovezu.iml
#       modified:   .idea/misc.xml
#       modified:   .idea/workspace.xml

您的
.gitignore
正在工作,但它仍然跟踪文件,因为它们已经在索引中

要停止此操作,您必须执行:
git rm-r--cached.idea/

提交时,
.idea/
目录将从git存储库中删除,以下提交将忽略
.idea/
目录

PS:您可以使用
.idea/
而不是
.idea/*
来忽略目录。您可以在上找到有关图案的更多信息


来自
git rm
手册页的有用引用


对于可能仍在搜索此问题的用户,请仅查看此页面

这将帮助您删除缓存的索引文件,然后只添加所需的索引文件,包括对
.gitignore
文件的更改

1. git rm -r --cached .  
2. git add .
3. git commit -m 'Removing ignored files'
有更多的信息

  • 此命令将从索引中删除所有缓存文件
  • 此命令将添加除
    gitignore
    中提到的文件以外的所有文件
  • 此命令将再次提交您的文件,并删除您希望git忽略的文件,但将它们保留在本地目录中
  • Git添加

  • Git状态//检查正在修改的文件

    //git重置头---替换为要忽略的文件


  • git reset HEAD.idea/只需添加
    git rm-r--cached


    有时,在执行文件的commit命令后更新.gitignore文件。因此,文件被缓存在内存中。要删除缓存文件,请使用上面的命令。

    此处和其他地方提供的解决方案对我不起作用,因此我将添加到讨论中,以供将来的读者使用。我承认我还没有完全理解这个过程,但我最终解决了我的(类似的)问题,并想与大家分享

    在Windows 10上的IntelliJ IDEA中使用git时,我意外地缓存了一些包含数百个文件的文档目录,在将它们添加到
    .gitignore
    (可能会将它们移动一点)后,我无法将它们从默认更改列表中删除

    我首先承诺了我所做的实际改变,然后着手解决这个问题——花了我太长时间。 我尝试了
    git rm-r--cached.
    但总是会得到
    path spec
    错误,路径spec以及
    -f
    -r
    标志会有不同的变化

    git status
    仍将显示文件名,因此我尝试将其中一些逐字记录用于
    git rm-cached
    ,但没有成功。 隐藏和取消隐藏更改似乎有效,但它们在一段时间后再次排队(我对确切的时间框架有点模糊)。 我最终删除了这些条目以便更好地使用

    git reset
    

    我认为只有当您没有实际要提交的暂存/缓存更改时,这才是一个好主意。

    如果您已经在.gitignore中添加了.IDEA/*并且如果
    git rm-r--cached.idea/
    命令不起作用(注意:显示错误-> 致命:pathspec“.idea/”与任何文件都不匹配)请尝试此操作

    从应用程序中删除.idea文件运行此命令

    rm -rf .idea
    
    现在运行
    git status
    并检查
    运行app时,将再次创建app.idea文件夹,但不会对其进行跟踪

    在我的情况下,
    .gitignore
    文件不知何故已损坏。它有时显示正常,但有时是胡言乱语。我想可能是编码的原因,但不能确定。为了解决这个问题,我删除了这个文件(以前是通过VS代码命令行中的
    echo>.gitgore
    创建的),并在文件系统(资源管理器)中手动创建了一个新文件,然后添加了我的忽略规则。在新的
    .ignore
    就位后,一切正常。

    使用
    git-rm--cached*file*
    对我来说并不正常(我知道这个问题已经8年了,但它仍然显示在搜索主题的顶部),它确实从索引中删除了文件,但也从远程删除了文件

    我不知道这是为什么。我想要的只是保持本地配置的隔离(否则我必须在每次提交之前注释localhost基url),而不是删除与config等效的远程配置

    读了更多的书,我发现了似乎是什么,这是实现我所需要的唯一方法,尽管它确实需要更多的关注,特别是在合并期间

    无论如何,它所需要的只是
    git更新索引——假设*path/to/file*
    没有改变

    据我所知,这是最值得记住的事情:

    如果Git需要在索引中修改此文件,例如在提交中合并时,Git将失败(正常);因此,如果假定未跟踪的文件在上游更改,则需要手动处理这种情况


    @Mehrad不需要*in.gitignoreNo,只需添加.idea/就行了,因为正如您在回答中所说,它已经在索引中了。所以您是说在删除缓存文件后需要提交?这似乎真的违反直觉;这些是我不想提交的文件。我不希望它们从存储库中删除(我只希望它们不再在我的
    git状态中乱七八糟地游荡)。或者我真的很困惑?由于之前的提交,git已经跟踪了他的文件,所以为了删除它们,你必须创建一个新的提交,将它们从存储库中删除。
    git rm-r--cached*
    我使用这个命令删除所有缓存的文件……但它删除了我的所有文件。。。请帮我撤消此操作@MAARTENCLSP可能的重复对我很有用,我只需要注意在WindowsCMD中单引号就可以了
    rm -rf .idea