为啥不建议将 Eclipse 项目文件夹作为 Git 存储库?

Posted

技术标签:

【中文标题】为啥不建议将 Eclipse 项目文件夹作为 Git 存储库?【英文标题】:Why is not recommended to have an Eclipse project folder as a Git repository?为什么不建议将 Eclipse 项目文件夹作为 Git 存储库? 【发布时间】:2012-12-15 22:53:00 【问题描述】:

当将项目共享为 git 并尝试将 Eclipse 项目文件夹作为 git 存储库时,Eclipse 表示不建议这样做,它应该位于 Eclipse 工作区之外。

这是为什么呢?

【问题讨论】:

从未听说过这种说法。您应该从 git 中排除 (--> .gitignore) eclipse 元数据,仅此而已。 看起来 EGit 开发人员实际上并没有使用他们自己的产品......这就是为什么 【参考方案1】:

虽然我同意将存储库保留在 Eclipse 工作区之外,但我仍然会在 Eclipse 项目根目录中创建一个 git 存储库(如在 this answer 中)。

除非您的程序由许多相互依赖的小项目组成,否则我会将一个 git repo 限制为一个 Eclipse 项目。 一个git repo就是记录一个树结构的内容,如果那个树代表一个项目,就更容易管理、标记、分支、合并(作为@ 987654322@). 如果它代表多个项目,您将不再确定像“1.0”这样的标签对于该 Git 存储库中的每个项目代表什么。

另外,我喜欢将 .project.classpath.settings 添加到 Git 存储库(如“Does git exclude eclipse project files from a new repo by default?”)

【讨论】:

您的.git 存储库位置很好,但要使项目独立于 IDE,建议不要提交 .project.classpath 和 .settings @YajliMaclo 我从来不明白共享特定于 ide 的配置文件有什么问题。项目中的所有人都应该使用相同的编译器版本和相同的库。不同的 IDE 通常不共享配置,当它们共享配置时,含义相同。 @VitoDeTullio 假设您的团队有两种类型的开发人员,其中一种使用Eclipse,另一种使用Netbeans,因此共享特定于 ide 的配置文件不是一个好主意,并且可能会在导入时出现问题来自 repo 的项目 @YajliMaclo 我已经与使用 eclipse 和 intellij 的人(以及一个使用 vim 的人)合作过同一个项目。我们没有任何问题;唯一的“问题”是项目的设置分为两组人(我们有两天时间,有些人使用 java7,有些人已经打开 java9) @VitoDeTullio 以及 Java 8 在这个故事中的位置在哪里? ;)【参考方案2】:

来自Eclipse EGit help pages,

将项目设置为存储库的根文件夹可能不是一个好主意

原因是您将永远无法向此存储库添加另一个项目,因为 .project 文件将占用根文件夹;您仍然可以将项目添加为子文件夹,但是众所周知,这种项目嵌套会导致很多问题。要添加另一个项目,您必须将该项目移动到存储库中的一个子文件夹,并将第二个项目添加为另一个子文件夹,然后才能提交此更改。

更多信息

将存储库保留在 Eclipse 工作区之外是个好主意

这有几个原因:

新的存储库会将 Eclipse 工作区的完整文件夹结构视为(潜在的)内容。这可能会导致性能问题,例如在提交之前计算更改时(例如,它将扫描完整的 .metadata 文件夹);通常情况下,工作区将包含死文件夹(例如已删除的项目),这些文件夹在语义上与 EGit 无关,但不能轻易排除。

元数据 (.git-) 文件夹将是 Eclipse 工作区的子文件夹。目前尚不清楚这是否会导致 Eclipse 不必要的文件夹遍历。

您可以通过销毁 Eclipse 工作区轻松销毁您的存储库

【讨论】:

以上是关于为啥不建议将 Eclipse 项目文件夹作为 Git 存储库?的主要内容,如果未能解决你的问题,请参考以下文章

如何将eclipse项目打包时为啥没有存放路径

为啥当我将我的国际象棋项目作为可运行的 jar 文件运行时,我得到一个奇怪的行为,而当我在 eclipse 中运行它时,一切正常?

为啥 Eclipse 不编译 APT 生成的类?

java web项目在eclipse内测浏览器可以打开 为啥在外浏览器打不显示404?

为啥“找不到要导入的项目”?

我的 Eclipse Maven 项目的 GitHub 中的文件夹结构