使用 Git 的 IntelliJ 上的 Scala:.gitignore 应该是什么样子?

Scala on IntelliJ with Git: How should the .gitignore look like?

注意:此问题特定于 Scala 项目。我想在没有任何事先配置的情况下从 IntelliJ 内部成功编译和 运行。

我使用 IntelliJ IDEA 创建了一个包含 Scala 示例的测试项目并将其发布到 GitHub。

项目结构如下所示:

我现在的 .gitignore 是这样的:

*.class
*.log
target/
.idea/
project/

这会生成如下所示的存储库:

现在我要做的是:

拥有 Scala 示例代码很酷,但我还想将此项目用作带有 IntelliJ 的 Scala 项目的模板。

那么,我应该如何最好地更改我的 .gitignore 文件,以便每当我克隆该项目时,我都可以使用 IntelliJ 打开它并使一切正常工作? 当然,这不包括目标目录,因此我需要在每次克隆项目时重新编译该项目。

您必须提交 /project 目录,因为它包含 build.propertiesplugins.sbt 等重要信息。

你应该忽略 /project/target 你也应该忽略 *.iml

假设您正在使用 SBTIntelliJ 中构建您的项目,您应该过滤掉以下目录:

project/target/
target/

(实际上,只需添加 target/ 即可过滤掉两者。)

这些目录包含从您的源代码生成的 SBT 输出,不应置于版本控制之下。

如果从事您项目的每个人都在编写代码时使用 IntelliJ,那么您应该添加所有 ./.idea 目录,但以下情况除外:

.idea/.name
.idea/libraries/
.idea/modules/
.idea/modules.xml
.idea/scala_compiler.xml
.idea/tasks.xml
.idea/workspace.xml
.idea_modules/

(您可能还想考虑将 .idea/sbt.xml 添加到此列表。它有一些来自 SBT 的冗余信息,但一些 IntelliJ SBT 还有配置设置。由你决定...)

这些文件和目录要么包含 IntelliJSBT 收集的信息(因此是冗余的),要么包含机器- and/or user-specific 如果在不同的机器上或由不同的用户检出会产生问题的信息。

如果 SBT 是主要的构建工具,人们可以使用他们喜欢的任何 IDE,它可能是最好忽略整个 .idea 目录。

我建议使用网站 https://gitignore.io,它会根据您的环境为您构建一个 .gitignore 文件。

这里忽略了你不应该为基于 Scala/SBT/Windows/Vim 的项目提交的所有内容:

https://gitignore.io/api/git,sbt,scala,windows,intellij,vim