即使对代码进行小小的更改,也会导致 .metadata 中的许多文件发生更改。
我想排除部分或全部 .metadata 的版本控制。如果完全排除它,工作区就会丢失。
有人知道我们可以安全地排除什么吗?或者,如果我们将代码拉到新电脑上,如何重新创建它?
GitHub维护一个社区“gitignore”项目,该项目记录了各种平台、编辑器和语言建议的忽略文件规范:https://github.com/github/gitignore
Eclipse的忽略规则在这里:https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore
(如果有其他文件规范需要知道,请告诉他们!)
元数据和工作区
我绝不会共享.metadata
文件夹。实际上,除非您有特定的原因,否则我甚至不会共享工作区文件夹,而是使用git单独分享每个项目。这样.metadata
文件夹将始终位于git仓库的父文件夹中,您无需考虑是否需要忽略它:
|-- workspace/
| \-- .metadata/
| |-- yourProjectOne/
| | \-- .git/
| | |-- .project
| | |-- src/
| | |-- ...
| |-- yourProjectTwo/
| | \-- .git/
| | |-- .project/
| | |-- src/
| | |-- ...
项目特定
你应该始终共享.project
文件,而不是共享.settings/
文件。 .classpath
可能取决于你的环境,但我不建议共享它,因为它可能会导致冲突(例如,如果一个用户使用openjdk,另一个用户使用sun-jdk)。.settings
包含eclipse的首选项和设置,并且经常发生更改,因此不应共享它。如果从git克隆后正确导入项目,则也不会有任何问题。
Eclipse文档对.project
文件的描述如下:
此文件的目的是使项目自我描述,以便将被压缩或发布到服务器的项目在另一个工作区中正确地重新创建。
以及:
如果在包含现有项目说明文件的位置创建了新项目,则该说明文件的内容将被视为项目说明。唯一的例外是,如果文件中的项目名称与正在创建的项目的名称不匹配,则将忽略该文件中的项目名称。如果磁盘上的说明文件无效,则项目创建将失败。
我还建议使用Maven,因为这将节省您许多与依赖关系管理和.classpath文件相关的问题。
Maven
与Maven项目的主要区别在于,您可以将项目导入为Maven->“现有Maven项目”,因此只需要在git中共享pom.xml和.project
文件。 Eclipse将自动为您创建.classpath, .settings/
文件。因此,显然不需要共享它们。如果pom.xml中有任何更改,则只需运行Maven->“更新项目配置”和Maven->“更新依赖项”。
没有Maven
你应该共享.project
文件而不是.settings/
文件夹。你可以考虑共享.classpath文件,但它可能会导致如上所述的冲突。我建议也不要共享它。使用以下方法导入项目:
在克隆了git存储库之后,您可以简单地使用Import->“从工作区导入现有项目”来导入该项目,eclipse将遵守.project
文件,但重新创建.classpath
和.settings/
文件。导入后,您需要手动从Eclipse配置类路径(每当您的团队想要使用其他库时都需要这样做)。
如果您不共享.project
文件,则无法使用Eclipse导入该项目。您需要先使用项目向导创建新项目,然后可以选择导入“通用->文件系统”,这将把所有文件复制到工作区中。这可能不是你想要的,因为它意味着你不能将git存储库克隆到工作区中,必须在其他地方克隆它,然后从那里导入它。因此,您应始终共享.project
文件。
如果您对此说明有建议或不同意,请留下评论。希望这能对您有所帮助。
我知道的文件有:
我有一个用于测试一些与Eclipse相关的工具的Eclipse工作空间,它被严重简化了,但可以使用。我会看看是否能找到它。
工作区元数据真的不应该保存在源代码控制中。基本的工作区配置可以通过团队项目集进行共享。
我经常保留.project和.classpath文件,它们不仅对git安全,而且很有用。
.class和.settings文件在我的gitignore中。它们是生成的和个人特定的。