如何使Git忽略Rubymine创建的.idea文件


183

我使用Rubymine for Rails项目。Rubymine通常会在.idea/*不需要的文件中进行更改。但是,这总是阻止我签出新分支,并使我的版本.idea/与我的同事有所不同。

我们已经添加.idea/.gitignore,但它会一直跟踪中的更改.idea。我应该如何正确地做到这一点?

以下是我收到的典型错误消息之一:

error: Your local changes to the following files would be overwritten by checkout:
    .idea/workspace.xml

9
也许你已经上班了;你需要git rm; 将其添加为忽略。
Kaan Yy

Answers:


254

.idea/工作正常,我


5
嗨,您好!想进一步告诉我们您是怎么做的...对我不起作用?:(
YoniGeek

Git的工作方式与此有所不同。有关更多信息,请参见git手册页
史蒂夫·本纳2014年

4
@BradBird我刚刚尝试过-也可用于子文件夹。另外,您可能想尝试一下**/.idea/
the_joric

21
问题的一部分是,如果您已经上演了事情,那么.gitignore将无济于事。
丹·罗森斯塔克

12
但是,如果要在添加/签入文件之后忽略文件/文件夹,则需要使用“ git rm -r --cached web / uploads”将其删除(在本示例中,我将“ web / uploads”文件夹添加到了.gigignore文件在签入后保存)来源:help.github.com/articles/ignoring-files
Dung

310

git rm -r --cached .idea在您的终端中尝试。它禁用更改跟踪。


2
非常感谢!但是,为什么在签出完全空的存储库后将其放入缓存中?
布迪

1
谢谢,非常有用。用它删除文件,然后将.idea添加到gitignore中,效果很好。非常感谢!
蒂姆·R

当.idea文件夹已经在跟踪中时,这实际上不起作用
ACV

因此,如果已经在Git中跟踪了该文件夹,则将.idea /添加到.gitignore不会阻止Git跟踪它。您需要先执行“ git rm -r --cached .idea”,然后将.idea /添加到您的.gitignore中。这对我来说很棒。
Sam003 '19

41

需要注意的是JetBrains的建议:“如果你决定要与其他开发者共享IDE项目文件...”,跟踪所有的.idea/*文件,除了以下三个文件

  • 工作区.xml
  • usage.statistics.xml
  • task.xml

因此,按照他们的建议,您可以将这3个文件添加到.gitignore中。


资源:

如果您决定与其他开发人员共享IDE项目文件,请遵循以下准则:
...
这是您需要共享的内容:

  • 项目中的所有根.idea目录下的文件,除了workspace.xmlusage.statistics.xmltasks.xml文件用于存储用户的特定设置
  • ...

如何在版本控制系统下管理项目存档

该页面上还有一些其他注释,说明针对不同的特定jetbrains IDE和构建需要哪些其他文件gitignore。


10
虽然我同意这个答案[正确性需要+1],但我认为不严格使用IDE的团队可以完全不检查.idea文件夹而逃脱...无论如何,对我来说这从来都不有意义那里总是有没有道理的冲突。
JaKXz 2014年

6
提交特定于IDE的文件是一种不好的做法。原因之一是不同的开发人员可能使用不同的工具。另一个是那些文件可能包含特定于用户的配置,这将始终引起冲突。
乔丹·席尔瓦

2
此建议是不正确的做法。在项目中使用它是对包含特定于用户的信息(例如绝对路径)的文件进行版本控制的最佳方法.idea。在执行此操作之前,只需查看文件夹内部即可。
JBE

1
我同意盲目提交IDE文件始终是一个坏主意,因为盲目提交任何内容都是一个坏主意。在某些情况下,共享IDE文件可能会很好。它在概念上类似于共享容器编排文件,因为它们是运行应用程序的一种方式。就像IDE文件是开发项目的一种方式一样,它可以包含有用的定义,例如如何运行单元测试或代码覆盖率命令,它们被整齐地包装在特定的IDE中。大多数.idea文件(至少在PyCharm中)被设计为共享的。
塞缪尔·哈默

26

添加.idea/*到排除列表中以防止跟踪所有.idea文件,目录和子资源。


24

如果Git已经在跟踪文件,则将文件添加到.gitignore不会阻止Git对其进行跟踪。您需要先对有问题的文件进行git rm,然后将其添加到.gitignore中。

添加.idea /应该可以


这应该是更全面的答案!
Sam003

21

git rm -r --cached .idea在您的终端中使用对我来说非常有用。它禁用更改跟踪并取消设置rubymine文件夹(idea /)下的许多文件,然后我可以添加并提交到git,从而删除比较并允许gitignore设置.idea/起作用。


13

在终端中关闭PHP Storm,转到项目文件夹类型

git rm -rf .idea; git commit -m "delete .idea"; git push;

然后转到项目文件夹并删除文件夹.idea

sudo rm -r .idea/

启动PhpStorm,您已完成


12

在rubymine gui中,有一个忽略列表(设置/版本控制)。也许尝试在那里禁用它。我从他们的支持人员那里得到了提示。

在此处输入图片说明



8

虽然切换到Rubymine的时间不长,但我发现忽略Rubymine的.idea文件已提交给git颇具挑战性。

这是我固定的方法

如果您根本没有执行任何暂存/提交操作,或者只是在Ruby mine中启动了一个新项目,则只需执行此操作

选项1

将以下行添加到.gitignore文件,该文件通常位于存储库的根目录中。

# Ignore .idea files
.idea/

这将确保所有.idea文件都不会被git跟踪,尽管它们仍将保留在本地项目文件夹中。

选项2

但是,如果您已完成一些暂存/提交操作,或者只是在Ruby mine中打开了一个现有项目,则只需执行此操作

在终端/命令行中运行代码

git rm -r --cached .idea

这会删除git中已经跟踪的.idea文件

接下来,将.idea /包含到.gitignore文件中,该文件通常位于存储库的根目录中。

# Ignore .idea files
.idea/

这将确保所有.idea文件都不会被git跟踪,尽管它们仍将保留在本地项目文件夹中。

选项3

但是,如果您已经执行了一些暂存/提交操作,或者只是在Ruby mine中打开了一个现有项目,并且想要在本地和git中完全删除.idea文件,则只需执行此操作

在终端/命令行中运行代码

git rm -r --cached .idea

这会删除git中已经跟踪的.idea文件

在终端/命令行中运行代码

rm -r .idea

这将删除所有.idea文件,包括本地文件夹

接下来,将.idea /包含到.gitignore文件中,该文件通常位于存储库的根目录中。

# Ignore .idea files
.idea/

这将确保git不会跟踪所有.idea文件,也不会从本地项目文件夹中删除这些文件。

就这样

我希望这有帮助



4

我建议阅读git手册页以充分了解忽略工作的方式,以后您会感谢我的;)

与您的问题有关:

Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning:

A leading "**" followed by a slash means match in all directories. For example, "**/foo" matches file or directory "foo" anywhere, the same     as pattern "foo". "**/foo/bar" matches file or directory "bar" anywhere that is directly under directory "foo".

A trailing "/**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the .    gitignore file, with infinite depth.

A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b",     "a/x/y/b" and so on.

Other consecutive asterisks are considered invalid.

4

您可以将gitignore用于高级gitignore文件生成。快速,简便,并且自动为您生成最先进的标签。

使用此链接可用于大多数jetbrains软件(intelijphpstorm ...) jetbrains .gitignore文件

[编辑]

以下是为Jetbrains软件生成的gitignore文件,这将防止您共享任何Jetbrains软件用于管理项目的敏感信息(密码,密钥库,数据库密码...)。

# Created by https://www.gitignore.io

### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm

*.iml

## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:

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

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

# Gradle:
# .idea/gradle.xml
# .idea/libraries

# Mongo Explorer plugin:
# .idea/mongoSettings.xml

## File-based project format:
*.ipr
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties

生成的代码也受到好评。希望对您有所帮助:)


尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。
Himanshu 2015年

@Himanshu链接指向gitignore文件的搜索引擎。您建议将什么内容复制到帖子中?
Dan D.

4

我试图将这些文件添加到我的文件中.gitignore,这是没有用的...

但是,正如Petr Syrov所说,您可以git rm -r --cached .idea在终端中使用这些文件,不再成为问题!




1

使用.ignore插件: https

它自动为您管理许多路径/模式,并且还具有许多有用的额外功能。与以下设备兼容:

  • IntelliJ IDEA
  • 暴风雨
  • 网络风暴
  • 药香
  • 红宝石矿
  • 应用程式码
  • 里昂
  • 高地
  • 数据夹
  • 骑士
  • MPS
  • Android Studio

0

如果您已经进行了首次提交,并且.idea文件在git中显示为新文件,则需要先删除这些文件,然后再提交它们。以下步骤可以解决问题

 1. git rm --cached -r .idea/
 2. Add .idea/ to **.git/info/exclude** or **.gitignore**
 3. git commit -m 'ignore .idea/ files'

在此链接中对此有详细解释:https : //devconnected.com/how-to-clear-git-cache/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.