我一直告诉我和其他人不要提交.classpath和 .project文件并使用Maven。
不知何故,初级开发人员总是忽略某些规则并提交这些文件,并且为可以跳转并开始使用代码的新手提供这样的文件要好得多。
现在从myside,我想尝试/做点什么。当我克隆repo时,我将获得.classpath和.project文件,当然它们会在我的系统中被修改。
但是我希望他们不被承诺,而且应该永远被忽略 与Git同步。所以我在本地系统中的更改没有 搞乱Git和Git这些文件的变化并没有弄乱我的 本地文件。
我如何实现这一目标?无论如何要以这种方式标记要忽略的文件?
答案 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