Git 应该跟踪 .idea 文件夹中的哪些文件?

Which files in .idea folder should be tracked by Git?

与 Netbeans 不同,在 Jetbrains IDEs 中,与用户和团队相关的设置文件混合在同一个文件夹中,这使得在需要将它们推送到 git 时变得棘手。

git 站点上的这些 IDE 和 https://intellij-support.jetbrains.com/hc/articles/206544839 页面有许多示例 git 忽略文件。

然而,在使用了几个月之后,我们发现反过来更安全,实际上更方便。我的意思是忽略所有 .idea 文件并明确仅添加与团队相关的设置。 (而不是全部添加并忽略一些)。

开发人员之间可以共享的主要内容是代码样式配置。因此,通过使用 IDE 自动重新格式化选项,所有团队都将遵循一致的风格。

除此之外,问题是还有哪些文件建议包含而不是忽略?为什么?

答案:我遇到了这个:https://github.com/salarmehr/idea-gitignore

建议不要提交所有 .idea 文件夹,因为它用于配置。喜欢 *.iml 文件。

如果我使用 Netbeans 而不是 Intellij,我不需要这些配置文件。它没有用,而且可能有冲突的危险。

Jetbrains 有 some official guidance 哪些文件 不应该 签入,哪些文件 可能不应该 签入,取决于您的使用情况。根据该页面,您应该签入 .idea 目录中的所有文件,除了:

  • workspace.xml
  • tasks.xml

可能还有:

  • dictionary 子目录中的 xml 个文件

虽然具体答案可能取决于您团队的具体做法,但根据我的经验,遵循该指南通常可以正确分离用户设置和共享项目配置。

根据本指南,应该共享的一些文件示例:

  • ant.xml,如果您使用 Ant 构建项目,会将 IDEA 指向您的构建文件并配置应该用于构建的属性。
  • vcs.xml,指定项目的版本控制配置
  • encodings.xml,指定 IDEA 应如何处理项目中的文本文件
  • modules.xml,它将 IDEA 指向您项目的每个模块配置文件,这些文件也应该在您的 VCS 中共享。
  • runConfigurations 子目录下的所有文件,它告诉 IDEA 它需要对 运行 您的应用程序做什么
  • codeStyleSettings.xml,正如您提到的,在自动代码格式化方面让您的整个团队达成一致

根据您团队的使用情况,可能会有或多或少,但这些是一些最典型的例子。

我同时使用 IDEA 和 Eclipse,但不使用 Netbeans。我 从不 提交任何项目文件,但确保我有一个 Maven 构建作为主要工具,然后我可以轻松地将 Maven 项目导入到任何 IDE 支持 Maven 的项目中,并且更改后从 Maven 刷新。对于 Eclipse 和 IDEA,这非常有效。

我的 .gitignore 文件对于我所有的项目都是这样的:

# Eclipse
.settings/
.classpath
.project

# IntelliJ IDEA
.idea/
*.iml

# Maven
target/

加上其他项目特定的文件或目录。

我不想签入 .idea 文件夹或 .iml 文件。

  • 如果您想共享编辑器样式,请考虑使用 .editorconfig 文件,JetBrains IDE 现在支持这些。
  • 对于其他事情,例如构建设置,您可以尝试依靠构建工具,例如使用 mavengradle 构建文件来进行特定设置。
  • 显然还有很多其他的事情不会被涵盖,但大多数都可以通过有据可查的约定来解决。

经过一番调查,我想到了https://github.com/salarmehr/idea-gitignore

#### ignore all .idea files ...
*

#### except

# Version Control configuration for your project
!vcs.xml

# how IDEA should treat the text files in your project
!encodings.xml

# automatic code formatting
!codeStyleSettings.xml

# project specific words
!dictionaries

!copyrights
!misc.xml
!sqldialects.xml

所有团队成员的上述文件实际上应该是相同的。