当前位置: 首页 > 知识库问答 >
问题:

Android Studio-整个.idea目录应该放在git忽略中吗?

姬魁
2023-03-14

我看到了很多AndroidStudio的.gitignore文件的示例,有些文件中有.idea文件,有些文件中没有。

有什么好的理由不把整个.idea目录添加到.gitignore吗?

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

共有3个答案

崔棋
2023-03-14

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

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

话虽如此,所遇到的问题如下:

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

我以前用Visual Studio和Netbeans在VC中做过这些类型的共享IDE配置,它总是很好;但是在.idea中,它感觉根本无法使用,这是令人失望的。我希望JetBrains能把它做得更好,让它有更好的用户体验。

顾英发
2023-03-14

好的,所以在一些“是”和“否”的答案之后,我添加了一个“是”和“否”的答案:)

问题是.idea同时用于项目生成配置(依赖项声明)和项目设置(检查等)。

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

赵嘉纳
2023-03-14

大家可以看看这个页面:

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

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

.idea目录包含一组配置文件(.xml)。每个文件只包含与某个功能区域有关的配置数据的一部分,该配置数据反映在文件名称中,例如compiler.xmlencodings.xmlmodules.xml

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

然而,我非常讨厌使项目依赖于IDE(我目前正在处理一个用NetBeans制作的项目,将其与Eclipse一起使用会有伤害,因为Eclipse已成为我公司的标准)。

所以,回答你的问题:

  1. 如果您不使用Maven或Gradle之类的东西来管理依赖项和构建:将目录保持在版本控制之下。这样,每个人都可以得到项目和依赖项的正确配置。相反,所有开发人员都必须按照您在配置文件中定义的方式设置他们的环境。
  2. 如果您确实使用了Maven或Gradle之类的工具:请正确配置这些工具,并且不要将目录置于版本控制之下。实际上,配置文件中包含的所有信息都应该存储在Maven/Gradle文件中。然后让开发人员根据环境配置IDE。这样,使用Eclipse、IntelliJ、Linux、Windows就不再是问题了。
 类似资料:
  • 我在问我,在AndroidStudio项目中,哪些文件夹应该被Git明明白白地忽略? 例如。“.idea”应该被忽略吗?

  • 但它没有,所以我假设不应该忽略文件夹。但是,我做了一个快速搜索,找到了某人的示例文件,这里,它显然忽略了文件夹。 所以,我的问题是,文件夹应该被忽略还是不应该被忽略?

  • 问题内容: 以下是来自pylint docs的内容: 但是我没有让目录部分起作用的运气。 我有一个名为migrations的目录,其中有django-south迁移文件。当我输入–ignore = migrations时,它仍然不断向我提供migrations目录内文件中的错误/警告。 难道这不适用于目录? 如果我什至可以使用regexp来匹配被忽略的文件,它将正常工作,因为django- sou

  • 问题内容: 我到底应该输入什么? 测试?这样的东西,?运行模块时不需要什么(自述文件除外)? 我对此没有任何指导。 问题答案: 正如您可能发现的那样,NPM并没有具体说明应该放入的内容,而是有一个默认忽略文件列表。许多人甚至不使用它,因为如果不存在,默认情况下会忽略其中的所有内容。此外,默认情况下,无论设置如何,许多文件都将被忽略,并且某些文件总是会被忽略,如上面的链接所述。 关于应该永远存在的东

  • 我的文件似乎被Git忽略了-文件是否已损坏?Git期望哪种文件格式、区域设置或区域性? 我的: 的输出: 我希望和不出现在“未跟踪文件”列表中。 我应该从哪里开始寻找解决这个问题?

  • 我的谷歌搜索给了我这个线程,它引导我们找到了Pycharm的官方站点,这里说我们应该保留除、以外的所有内容 虽然我看到文件和也包含指向Ubuntu中用户主页中的子文件夹的本地/物理路径。 所以我很困惑,把它提到这里--我们git也应该忽略这两个文件吗?