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



我将回到两年前的一个Eclipse和Java项目。我想试试SmartGit。我允许SmartGit查找以前在命令行上管理的git存储库。令我惊讶的是,它发现了8个存储库,而我预计只有4个。例如,在中

…/bin/com/domain/实用程序

SmartGit找到了一个存储库,并告诉我所有.java文件都丢失了,所有.class文件都未被跟踪。这似乎很奇怪。我不记得在二进制端创建过Git存储库。

更有意义的是

../src/com/domain/实用程序

列为"已修改"的文件与我最近编辑的文件相对应。消息来源方面似乎如预期。

回到命令行,查看git log的提交历史,我可以看到二进制日志与源日志完全相同,一直到第二个。当然,同时在二进制文件中提交和在源文件中提交是不可能的。

我之前曾在2012年10月尝试使用EGit,但放弃了这一尝试。EGit可能负责在二进制端创建这个奇怪的存储库吗(但所有的.java文件都丢失了,.class文件也没有被跟踪?)

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

这很简单。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

最新更新