忽略Git中的.classpath和.project

时间:2013-09-23 08:49:26

标签: java eclipse git gitignore

  

我一直告诉我和其他人不要提交.classpath和   .project文件并使用Maven。

不知何故,初级开发人员总是忽略某些规则并提交这些文件,并且为可以跳转并开始使用代码的新手提供这样的文件要好得多。

现在从myside,我想尝试/做点什么。当我克隆repo时,我将获得.classpath和.project文件,当然它们会在我的系统中被修改。

  

但是我希望他们不被承诺,而且应该永远被忽略   与Git同步。所以我在本地系统中的更改没有   搞乱Git和Git这些文件的变化并没有弄乱我的   本地文件。

我如何实现这一目标?无论如何要以这种方式标记要忽略的文件?

4 个答案:

答案 0 :(得分:98)

如果已提交.project.classpath,则需要从索引中删除它们(但不是磁盘)

git rm --cached .project
git rm --cached .classpath

然后.gitignore将起作用(该文件可以添加并通过克隆共享) 例如,这个gitignore.io/api/eclipse文件将起作用,其中包括:

# Eclipse Core      
.project

# JDT-specific (Eclipse Java Development Tools)     
.classpath

请注意,您可以在克隆时使用“Template Directory”(确保您的用户将环境变量$GIT_TEMPLATE_DIR设置为所有人都可以访问的共享文件夹。) 该模板文件夹可以包含 info/exclude 文件, ignore rules,您希望为所有 repos强制执行该文件,包括新的 {1}})任何用户都会使用。

答案 1 :(得分:8)

在.gitignore中添加以下行并将文件放在ur project folder

/target/
/.classpath
/*.project
/.settings
/*.springBeans

答案 2 :(得分:5)

针对此类情况的git解决方案是设置 SKIP-WORKTREE BIT 。仅运行以下命令:

git update-index --skip-worktree .classpath .gitignore

当您希望git 忽略已由git管理并已存在于索引中的文件的更改时使用。这是配置文件的常见用例。

运行git rm --cached在问题中提到的情况下不起作用。如果我简化问题,它说:

如何在仓库中使用.classpath.project,同时每个仓库可以 本地更改它,而git忽略此更改?

正如我在接受的答案下评论的那样,git rm --cached的缺点是它会导致索引发生更改,因此您需要提交更改,然后将其推送到远程存储库。结果,.classpath.project将在仓库中不可用,而PO希望它们出现在仓库中,以便任何首次克隆该仓库的人都可以使用它。

什么是跳工位?

基于git documentaion:

可以在一个(长)语句中定义“跳过工作树”位:阅读条目时,如果将其标记为“跳过工作树”,则Git会假装其工作目录版本是最新的,而是读取索引版本。 尽管此位看起来与假定不变的位相似,但其目标与假定不变的位不同。设置两者时,“跳过工作树”也优先于假定不变的位。

here提供了更多详细信息。

答案 3 :(得分:2)

使用.gitignore文件。这允许您忽略某些文件。 http://git-scm.com/docs/gitignore

这是一个示例Eclipse,它处理您的类路径和项目文件:https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore