如果使用Maven,是否应忽略VCS中特定于Eclipse的文件?

时间:2011-11-17 15:40:26

标签: java eclipse git maven gitignore

我知道为什么不将Eclipse / IDE特定的文件提交到像Git这样的VCS(我实际上正在使用它)。这是我使用Maven并让它为您生成这些文件的原因之一,并且让它们受版本控制。

但我想知道,如果这些文件应该在.gitignore中被忽略,它本身受VCS / Git的控制:

.classpath
.project
.settings/
target/

这可以吗?

由于.gitignore文件本身变成了特定于IDE的文件有什么优点和缺点,因为忽略的文件是IDE特有的?任何最佳实践?

4 个答案:

答案 0 :(得分:11)

对于我所做过的团队,一般规则是你不要检查由Maven生成或获得的任何东西。由于pom.xml包含创建.project,.classpath和.settings文件所需的所有内容,因此我们不会检查它们。

我的.gitignore总是包含.classpath,.settings,.project和Maven项目的目标。

编辑:正如我在下面的评论中所提到的,这是另一个建议:如果你真的想避免在你的.gitignore中使用Maven或IDE特定条目,try writing your .gitignore so you list only what you DO want checked in

*
!stuffIDoWantToCheckIn

答案 1 :(得分:2)

我从以下文章中获取了我的信息:https://help.github.com/articles/ignoring-files

这表明您可以创建一个包含.project等的全局gitignore文件(在〜/ .gitignore_global下建议)。由于该文件在repo之外,它不会显示...

使用以下命令将其注册为全局忽略文件:

git config --global core.excludesfile ~/.gitignore_global

或者,您可以在.git / info / exlude文件中创建每个repo未跟踪的gitignore条目

答案 2 :(得分:1)

我同意不将IDE文件置于版本控制之下,这偶尔会引起各种各样的痛苦,并且正如您提到的那样使用maven呈现这一点不必要,因为任何开发人员只需从POM导入项目即可开始

如果这些文件没有放入.gitignore,则可以轻松检查

此外,我没有找到将它们列在.gitignore使其特定于IDE,您可以列出eclipse,IntelliJ IDEA和Netbeans的项目文件,如果您的团队成员使用不同的IDE,则所有这些文件都在同一个.gitignore中。随着时间的推移,您可能会累积一个模板.gitignore,它会忽略您团队中使用的所有IDE中的项目文件,以便在您创建新存储库时使用

如果你完全反对把这些放在项目.gitignore中,你可以将它们放在用户.gitignore中,但在我看来这有点宽松,因为它取决于正确配置的各个开发机器,还有这些需要保持与任何新增加的同步

编辑:我目前有一个等效的.hgignore,相同的概念不同的语法,我把它转换为git作为这样一个.gitignore文件的例子

/target/
/bin/
/build/
/.classpath
/.project
/.settings/
/.checkstyle
/atlassian-ide-plugin.xml
/.idea/
/*.iml
/*.ipr
/*.iws
*.orig
*.swp
*~

答案 3 :(得分:0)

通常.project和.settings /应该被版本化并被忽略!

.classpath和target不应该被版本化而是被忽略。

这是结账实践的第一次初始启动。

  • 您告诉过任何人使用四个空格作为标签,此信息存储在.settings / xxx
  • 但你不必限制他们必须安装他们的tomcat / jdk(存储在.classpath下)

OK?