Android 工作室-整个.idea 目录应该被 Git 忽略吗?

我看到了很多 安卓工作室.gitignore文件的例子,有些有 .idea,有些没有。

有没有一个好的理由不把整个. idea dir 添加到. gitignore?

如果它不应该被完全忽略,有特定的文件在里面。(例如:。应该在。吉蒂诺尔?

66538 次浏览

你可以看看这一页:

关于项目配置文件的 IntelliJ 文档

在“基于目录的格式”中,有一行很有趣:

那个。Idea 目录包含一组配置文件(。Xml).每个文件只包含与特定功能区有关的配置数据的一部分,这部分数据反映在文件名中,例如 compiler.xmlencodings.xmlmodules.xml

几乎所有的文件都包含项目本身的信息核心,例如组件模块的名称和位置、编译器设置等。因此,这些文件可以(而且应该)保存在版本控制之下。

然而,我正确地讨厌让项目依赖 IDE (我目前正在处理一个由 NetBeans 制作的项目,并且将它与 Eclipse 一起使用(Eclipse 已经成为我们公司的标准)是有害的)。

所以,回答你的问题:

  1. 如果你使用 不用来管理依赖关系并构建: 保持目录在版本控制之下。通过这种方式,项目的正确配置和依赖关系对每个人都是可用的。对应的,所有开发人员都必须按照在配置文件中定义的方式来设置环境。
  2. 如果你使用 使用,比如 Maven 或 Gradle: 正确配置这些工具和 不要将目录置于版本控制之下。实际上,配置文件 应该是中包含的所有信息都存储在 Maven/Gradle 文件中。然后让开发人员根据环境配置 IDE。这样,使用 Eclipse、 IntelliJ、 Linux、 Windows... 将不再是一个问题。

好的,在一些“是”和“否”的回答之后,我加上一个“是和否”的回答:)

问题是,.idea既用于项目构建配置(依赖项声明) ,也用于项目设置(检查等)。

您肯定不希望在构建配置中使用 IDE,但是您可能希望在团队中共享这些设置。这就是为什么你只需要忽略 .idea内容的一部分(比如 libraries文件夹和 modules.xml文件) ,而保留其他的版本控制(比如 copyrightdictionariesinspectionProfiles文件夹和 .idea下的文件,比如 dynamic.xmlcodeStyleSettings.xml等)。

在 VC 中保持项目配置的概念是有效的。我和我的团队这样做是因为我们所有的开发人员都碰巧在我们的项目中使用了 PHPStorm,所以在概念上保持一个通用的配置是有意义的。我们希望使用相同的字典文件、相同的编码标准规则和相同的插件配置。

我之所以用“概念”来限定它是因为 JetBrains 的设计有问题。导致我们无法使用它的想法文件夹。这些问题可能是可以避免或修复的,但是我们不清楚如何正确地做到这一点,我们认为这是 JetBrains 的错误,因为作为开发人员,我们没有时间也没有愿望去寻找解决方案来使我们的 IDE 正确地工作。

话虽如此,问题如下:

  • 符号链接项目文件夹不能正常工作。 当我设置我的项目时,我将它们符号链接到我的主目录中。我们发现,这个项目被设置为使用精确的符号链接,而不是仅仅把它当作一个具体的目录。这意味着,如果另一个开发人员将他的项目放在不同的地方,或者只是不使用符号链接,那么整个目录将从项目导航器中消失,因为它正在逐字地寻找符号链接。更糟糕的是,我从未在配置中找到这个路径值。我们无法在组成我们的。创意文件夹。
  • 默认情况下,定义文件分区为用户。这意味着如果我想在我的字典中添加一个单词,它将被列为我的定义 jgreathouse,但是其他用户将有他们自己的定义部分。标记的单词仍然会显示为其他用户的拼写错误。这不是我想要的。我将它添加到我的定义文件的原因是因为 IDE 是错误的。我希望这些定义能够直观地与其他用户共享。
  • 同事们不断地重写配置,因为他们的 IDE 会用当前在内存中的配置重写配置。我的意思是,一个开发人员将工作,并合并他们的存储库从原来,这将包含一个项目配置更改,而不是他们的 IDE 更改配置,甚至给他们一个选择,它将自动覆盖。思想配置与当前的内存配置的 IDE。在我看来。想法配置不能作为共享配置使用。为了解决这个问题,开发人员必须关闭 IDE 的实例,拉出 repo,然后重新打开 IDE。如果 IDE 立即用内存中当前的配置覆盖共享配置,那么保留共享配置是没有意义的。这就像完全没有共享配置一样。

我以前用 Visual Studio 和 Netbeans 在 VC 中做过这些类型的共享 IDE 配置,一直都很好;。感觉就是不能用,这很令人失望。我希望 JetBrains 能够做到这一点,让它成为一个更好的用户体验。

作为对这一问题解释的补充,GitHub 的.gitignore Android 模板包括以下档案:

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml

还请注意 如何在版本控制系统下管理项目上的 JetBrains 指南中关于与其他开发人员共享 IDE 项目文件的条目:

需要分享的内容:

除了 存储用户特定设置的项: workspace.xml Xml 搁板目录