git在添加到.gitignore后仍显示已修改的文件
我正在将此添加到.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
.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 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