镜像图像在Eclipse项目的二进制端发现的Git存储库

时间:2016-01-09 07:15:16

标签: eclipse git egit

我将从两年前回到Eclipse和Java项目。我想我会尝试一下SmartGit。我已经允许SmartGit找到以前在命令行上管理的git存储库。令我惊讶的是,当我只预期4时,它找到了8个存储库。例如,在

... / bin / COM /域/效用

SmartGit找到了一个存储库并告诉我所有.java文件都丢失了,所有.class文件都没有跟踪。这看起来很奇怪。我不记得在二进制方面创建一个Git存储库。

更有意义的是

../ src / COM /域/效用

列为"已修改的文件"对应于我记得我最近编辑的内容。来源方似乎如预期。

回到命令行并查看来自git log的提交历史记录我可以看到二进制日志与源日志相同,直到第二个日志。当然,在二进制文件中提交并同时在源代码中提交是不可能的。

我之前曾试图在2012年10月使用 EGit ,但放弃了这一尝试。 EGit可能负责在二进制方面创建这个奇怪的存储库(但缺少所有.java文件和.class文件没有跟踪?)

如果此镜像提交日志不是Git的正常输出,我将删除二进制端的整个.git文件夹。我想在这里发帖,看看是否可以确认Git没有理由创建它。

1 个答案:

答案 0 :(得分:2)

这很简单。 git知道文件夹是git项目的根,因为它包含一个.git目录。

您的src目录显然是根git目录。

您的构建过程(或只是Eclipse)将递归地复制每个非Java文件到bin。这包括.git目录。

所以,当你在bin中时,git正确地认为它是git项目的根(因为它有一个.git目录);它正确地说所有Java文件都丢失了(因为它们已被编译器的.class文件替换),并且它正确地说所有.class文件都没有被跟踪(因为你没有'对这些文件有任何忽略规则。)

你有两个问题:

  1. 根git文件夹从一开始应该是src的父目录:它包含了源代码,但我认为,你的构建文件,脚本,文档等等 也应该被版本化为git。
  2. 由于src是根目录并且包含.git目录,因此构建应忽略该.git目录,而不是将其复制到bin