257

使用 PHPStorm,我试图忽略workspace.xml每次尝试进行 git 提交时弹出的内容。

我的.gitignore样子:

/.idea/
.idea/workspace.xml

因为在某个时间点文件已提交,我还执行了:

git rm --cached .idea/workspace.xml然后提交删除,推送到一个裸仓库。

但是当我在项目中进行更改时,该文件会不断弹出。

关于我所缺少的任何想法?

4

12 回答 12

316

我面临同样的问题,它把我逼到了墙角。问题最终是 .idea 文件夹之前已经提交到 repo 中,因此无论您是否忽略它们,它们都被 git 跟踪。在关闭 RubyMine/IntelliJ 或您正在使用的任何 IDE 之后,我会推荐以下内容:

mv .idea ../.idea_backup
rm .idea # in case you forgot to close your IDE
git rm -r .idea 
git commit -m "Remove .idea from repo"
mv ../.idea_backup .idea

之后确保忽略 .gitignore 中的 .idea

尽管在存储库的 .gitignore 中忽略它就足够了,但我建议您全局忽略 IDE 的点文件。

否则,您必须将它添加到您从事的每个项目的每个 .gitgnore 中。此外,如果您与其他人合作,那么最好不要使用不特定于项目源代码的私有配置来污染项目的 .gitignore。

于 2015-01-21T14:13:58.060 回答
91

我刚才有这个问题,我现在必须做git rm -f .idea/workspace.xml 它似乎没有了(我也不得不把它放进去.gitignore

于 2013-12-02T17:02:50.680 回答
35

我不得不:

  • 从 git 中删除文件
  • 将提交推送到所有遥控器
  • 确保所有其他提交者从远程更新

命令

git rm -f .idea/workspace.xml
git remote | xargs -L1 git push --all

其他提交者应该运行

git pull
于 2014-04-22T07:41:08.983 回答
28

在您看到文件出现的同一目录中,执行以下操作:

  • rm .idea/workspace.xml
  • git rm -f .idea/workspace.xml (as suggested by chris vdp)
  • vi .gitignore
  • i(编辑),添加.idea/workspace.xml其中一行Esc,,,:wq

你现在应该很好

于 2014-11-20T08:39:44.160 回答
26

.idea/完全从 git中删除而不影响您的 IDE配置,您可以这样做:

git rm -r --cached '.idea/'
echo .idea >> .gitignore
git commit -am "removed .idea/ directory"
于 2019-04-17T19:17:42.227 回答
8

如果您的 git 存储库中有多个项目.idea/workspace.xml,则不会与任何文件匹配。

相反,请执行以下操作:

$ git rm -f **/.idea/workspace.xml

让你的 .gitignore 看起来像这样:

# User-specific stuff:
**/.idea/workspace.xml
**/.idea/tasks.xml
**/.idea/dictionaries
**/.idea/vcs.xml
**/.idea/jsLibraryMappings.xml

# Sensitive or high-churn files:
**/.idea/dataSources.ids
**/.idea/dataSources.xml
**/.idea/dataSources.local.xml
**/.idea/sqlDataSources.xml
**/.idea/dynamic.xml
**/.idea/uiDesigner.xml

## File-based project format:
*.iws

# IntelliJ
/out/
于 2017-09-15T21:23:17.387 回答
5

只是告诉 git 不要假设它被改变了,无论如何:

git update-index --assume-unchanged src/file/to/ignore

是的,您可以从 git 存储库中删除文件。但是,如果您的团队都使用相同的 IDE 或者您自己一个人,您可能不想这样做。对你自己来说,你希望有一个好的起点来恢复工作,对你的队友也是如此。

于 2017-06-29T21:02:06.380 回答
1

PHPStorm 对我来说同样的问题

最后我解决了以下问题:

  • 删除.idea/目录
  • .gitignore移到同一级别将是新生成的.idea/
  • 写下你需要忽略的文件,还有.idea/。为了确保它将被忽略,我输入了以下内容:

    • 。主意/
    • 。主意
    • 。主意/*

我不知道为什么会这样工作,也许.gitignore需要与.idea处于同一级别才能忽略此目录。

于 2019-07-12T10:16:12.520 回答
1

我在同样基于 IntelliJ 的 Android Studio 中所做的方式是这样的。在提交对话框中,我恢复了对 workspace.xml 的更改,然后将其移至未版本控制的文件。之后我从提交对话框中删除了它。现在它不会出现在更改列表中。请注意,我的 gitignore 已经包含 .idea/workspace.xml

于 2017-10-04T10:50:01.860 回答
0

因为在我的情况下,我正在执行项目的第一次提交,只需删除.git.idea文件夹,然后使用重新初始化 git就可以git init帮助解决问题。现在我根本没有.idea

于 2018-03-16T23:25:22.883 回答
0

不直观,但一旦我弄清楚它就很容易修复:我将文件添加到 .gitignore,然后在提交选项卡的更改列表中恢复该文件。它不再出现。

(我猜一旦 IntelliJ 自动将更改添加到 git,它将不再与 .gitignore 进行比较。一旦恢复,IntelliJ 将在添加文件之前开始与 .gitignore 进行比较。)

于 2021-07-25T15:21:53.843 回答
-1

忽略.gitignore 参考.iws中以, 和workspace.xml结尾的文件tasks.xml

于 2016-05-30T11:30:48.453 回答