我把这个添加到。gitignore文件

.idea/*

但无论如何,现状是:

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

我做错了什么? 我甚至在全局变量~/.gitignore_global中添加了.idea/* 但是git的状态告诉我:

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

当前回答

如果你已经在你的。gitignore中添加了。idea/* Git rm -r——cached .idea/命令不工作(注意:显示错误-> 致命的:pathspec '。Idea /'没有匹配任何文件)试试这个

从你的应用中删除。idea文件运行这个命令

rm -rf .idea

现在运行git status并检查 在运行app时,将再次创建.idea文件夹,但它不会被跟踪

其他回答

我插一句。在我的例子中,子目录中有一个git repo,因为我从其他人那里解压缩了一个zip文件,然后递归地将他们解压缩zip中的所有内容复制到我的repo中,而没有检查我正在复制什么。

一旦我吹走了我现有的回购中的.git目录,一切都很好。

对于那些可能仍然在搜索这个问题的人,只看这一页。

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

1. git rm -r --cached .
2. git add .
3. git commit -m 'Removing ignored files'

这里有更多的信息。

此命令将从索引中删除所有缓存文件。 该命令将添加除gitignore中提到的文件之外的所有文件。 这个命令将再次提交文件,并删除你想让git忽略的文件,但将它们保存在本地目录中。

这里和其他地方提供的解决方案对我不起作用,所以我将为将来的读者补充讨论。我承认我还没有完全理解这个过程,但我终于解决了我的(类似的)问题,想要分享。

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

我首先提交了我所做的实际更改,然后着手解决这个问题——花了我太长时间。 我尝试了git rm -r——cached。但是总是会得到路径规范错误,带有不同的路径规范变体以及-f和-r标志。

git状态仍然会显示文件名,所以我尝试使用git rm -cached中的一些文件,但没有运气。 存储和解存储更改似乎是有效的,但它们在一段时间后再次排队(我对确切的时间框架有点不清楚)。 我最终删除了这些条目,以便更好地使用

git reset

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

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

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

读了更多,我发现了做这件事的正确方法,也是我所需要的唯一方法,尽管它确实需要更多的注意,特别是在合并期间。

不管怎样,它所需要的是git update-index——assume-unchanged *path/to/file*。

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

Git会失败(优雅地),如果它需要在索引中修改这个文件,例如在提交合并时;因此,如果假设未跟踪的文件在上游被更改,您将需要手动处理这种情况。

简单添加git rm -r——cached <folder_name/file_name>

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