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

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

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

.classpath .project .settings/ target/ 

这个可以吗?

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

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

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

编辑:正如我在下面的评论中所提到的,这是另一个建议:如果你真的想避免在.gitignore中使用Maven或IDE特定条目,请尝试编写你的.gitignore,这样你只列出你想要签入的内容 。

 * !stuffIDoWantToCheckIn 

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

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

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

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

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

我同意不将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 *~ 

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

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

这是结帐练习的第一次初始启动。

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

好?