Android工作室 - 整个.idea目录应该在git中忽略吗?

dor*_*ors 131 git android gitignore android-studio

我看到了许多AndroidStudio.gitignore文件的例子,其中一些包含在其中,有些则没有..idea

是否有充分的理由不将整个.idea目录添加到.gitignore?

如果它不应该被完全忽略,那么.idea(例如.iml)中的特定文件是否应该在.gitignore中?

mit*_*rop 99

你可以看一下这个页面:

关于项目配置文件的IntelliJ doc

在"基于目录的格式"中,特定的行很有趣:

.idea目录包含一组配置文件(.xml).每个文件包含仅与这反映在一个文件的名称的某些官能区域,例如配置数据的一部分,compiler.xml,encodings.xml,modules.xml.

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

但是,我正好讨厌使项目依赖于IDE(我目前正在开发一个使用NetBeans创建的项目,并且将它与Eclipse一起使用会很痛苦,这将成为我公司的标准).

那么,回答你的问题:

  1. 如果您不使用 Maven或Gradle之类的东西来管理依赖项和构建:将目录保留在版本控制之下.这样,项目和依赖项的正确配置将适用于所有人.在对应方面,所有开发人员必须完全按照在配置文件中定义环境的方式设置环境.
  2. 如果您使用 Maven或Gradle之类的东西:正确配置这些工具并且不要将目录保留在版本控制之下.实际上,配置文件中包含的所有信息都应存储在Maven/Gradle文件中.然后让开发人员根据他们的环境配置他们的IDE.这样,使用Eclipse,IntelliJ,Linux,Windows ......将不再是一个问题.

  • 但请注意下一段:"例外是文件workspace.xml.它存储了您的个人设置......因此,您不太可能希望与同事共享此文件." (9认同)

JBa*_*uch 38

好的,所以在一些"是"和"否"回答后,我正在添加"是和否"答案:)

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

您绝对不希望将IDE用于构建配置,但您可能希望在团队之间共享设置.这就是为什么你只需要忽略的部分.idea内容(如libraries文件夹和modules.xml文件),但保留其他版本控制(例如copyright,dictionariesinspectionProfiles下文件夹和文件.idea一样dynamic.xml,codeStyleSettings.xml等).


Jes*_*use 6

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

我之所以用"概念"来证明这一点,是因为JetBrains的.idea文件夹存在问题导致我们无法使用它.这些可能是本来可以避免或修复的问题,但我们不清楚如何正确地做到这一点,我们认为这是JetBrains的错,因为作为开发人员我们没有时间也不想寻找如何制作解决方案我们的IDE工作正常.

话虽如此,问题如下:

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

在使用Visual Studio和Netbeans之前,我已经在VC中完成了这些类型的共享IDE配置,它总是很好; 但是对于.idea感觉简直无法使用,这令人失望.我希望JetBrains能够掌握它并使其成为更好的用户体验.