我把这个添加到。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

当前回答

如果你用类似echo node_modules >> .gitignore这样的东西来保存它,也会发生这种情况

windows终端以UCS-2 LE BOM编码保存文件,git似乎不接受这一点。

因此,您可以使用记事本打开文件,并使用UTF-8编码保存

现在起作用了。

我认为他们应该修复这个问题,因为做echo "filetoignore" >> .gitignore实际上似乎非常方便。

其他回答

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

要停止这个,你必须这样做:git rm -r——cached .idea/

当你提交时。idea/目录将从你的git存储库中删除,接下来的提交将忽略。idea/目录。

PS:你可以用.idea/代替.idea/*来忽略一个目录。您可以在.gitignore手册页上找到关于模式的更多信息。


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

--cached
    Use this option to unstage and remove paths only from the index. 
    Working tree files, whether modified or not, will be left alone.

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

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

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

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

索引更新——skip-worktree

忽略配置文件的特定git选项是:

$ git update-index --skip-worktree <filepath>

注意,不需要在.gitignore中添加任何东西。

要取消此设置,例如当配置文件的通用结构发生更改时:

$ git update-index --no-skip-worktree <filepath>

——skip-worktree用于指示git永远不要将文件更改索引到特定的文件。这可能是因为开发人员通常需要在本地更改文件以测试项目。例如,如果主存储库上游托管了一个可用于生产的配置文件,那么应该防止对该文件的意外提交更改。

而——assume-unchanged则假设开发人员永远不应该更改该文件。这个标志仅仅是为了提高git的性能,不改变像软件开发工具包(SDK)组件这样的文件夹。

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

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

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

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

git reset

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