忽略Git中的.classpath和.project

Red*_*ddy 69 java eclipse git gitignore

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

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

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

但我希望它们不会被提交,并且在与Git同步时应该始终被忽略.因此,我在本地系统中的更改不会搞砸Git和Git这些文件的更改不会弄乱我的本地文件.

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

Von*_*onC 104

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

git rm --cached .project
git rm --cached .classpath
Run Code Online (Sandbox Code Playgroud)

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

# Eclipse Core      
.project

# JDT-specific (Eclipse Java Development Tools)     
.classpath
Run Code Online (Sandbox Code Playgroud)

请注意,您可以在克隆时使用" 模板目录 "(确保您的用户将环境变量$GIT_TEMPLATE_DIR设置为所有人都可访问的共享文件夹).
该模板文件夹可以包含一个info/exclude文件,其中包含您希望对所有存储强制执行的忽略规则,包括任何用户将使用的新的().git init


VIJ*_*VIJ 10

在.gitignore中添加以下行,并将文件放在ur项目文件夹中

/target/
/.classpath
/*.project
/.settings
/*.springBeans
Run Code Online (Sandbox Code Playgroud)

  • 我认为这个答案非常有用。我知道所有概念,但只想将确切的代码放入.gitignore文件中。谢谢@ViyaanJhiingade并欢迎您到StackOverflow。 (2认同)

Abd*_*lah 6

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

git update-index --skip-worktree .classpath .gitignore
Run Code Online (Sandbox Code Playgroud)

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

运行git rm --cached不适用于问题中提到的场景。如果我简化问题,它会说:

当每个人都可以在本地更改它并且 git 忽略此更改时,如何在 repo 上拥有.classpath.project

正如我在接受的答案下评论的那样,缺点git rm --cached是它会导致索引发生更改,因此您需要提交更改,然后将其推送到远程存储库。作为结果,.classpath.project不会同时PO希望他们能有这么任何人克隆回购首次,就可以利用它提供的回购。

什么是跳过工作树位?

基于 git 文档:

跳过工作树位可以用一个(长)句来定义:当读取一个条目时,如果它被标记为跳过工作树,那么 Git 会假装它的工作目录版本是最新的,而是读取索引版本。虽然这个位看起来类似于假设未更改的位,但它的目标与假设未更改的位不同。当两者都设置时,跳过工作树也优先于假设不变位。

在此处获得更多详细信息。

  • 这应该是新接受的答案,因为这是将文件提交到 git 并在新提交时忽略它们的唯一方法。 (2认同)