不能忽视.idea / workspace.xml - 不断弹出

时间:2013-11-14 09:07:13

标签: git intellij-idea phpstorm

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

我的.gitignore看起来像是:

/.idea/
.idea/workspace.xml

因为文件已经提交,我还执行了:

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

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

关于我缺少的任何想法?

12 个答案:

答案 0 :(得分:243)

我遇到了同样的问题,它把我推到了墙上。问题最终是.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的dotfiles。

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

答案 1 :(得分:67)

我刚才遇到这个问题,我必须做git rm -f .idea/workspace.xml 现在它似乎消失了(我还必须把它放进.gitignore

答案 2 :(得分:24)

在您看到文件的同一目录中显示:

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

你现在应该好了

答案 3 :(得分:22)

我必须:

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

命令

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

其他提交者应该运行

git pull

答案 4 :(得分:5)

如果您的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/

答案 5 :(得分:2)

告诉git不要假设它被改变了,不管是什么:

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

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

答案 6 :(得分:2)

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

git rm -r --cached '.idea/'
echo .idea >> .gitignore
git commit -am "removed .idea/ directory"

答案 7 :(得分:0)

我在Android Studio中的方式也基于IntelliJ,就像这样。在提交对话框中,我还原了workspace.xml的更改,然后将其移动到unversioned文件。之后我从提交对话框中删除了它。现在它不会出现在更改列表中。请注意,我的gitignore已经包含.idea / workspace.xml

答案 8 :(得分:0)

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

答案 9 :(得分:0)

PHPStorm对我来说是同样的问题

最后我解决了以下问题:

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

    • .idea /
    • .idea
    • .idea / *

我不知道为什么这样工作,也许 .gitignore 必须与 .idea 处于同一级别才能被忽略。

答案 10 :(得分:0)

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

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

答案 11 :(得分:-1)

忽略以.iws结尾的文件以及.gitignore中的workspace.xmltasks.xml个文件 Reference