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

mirror image Git repository discovered in the binary side of an Eclipse project

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

.../bin/com/domain/utilities

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

更有意义的是

../src/com/domain/utilities

列为 "modified" 的文件与我记得我最近正在编辑的文件相对应。源端似乎如预期的那样。

回到命令行并查看 git log 的提交历史,我可以看到二进制日志与源日志完全相同,精确到秒。当然,人类不可能同时提交二进制文件和提交源代码。

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

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

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

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

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

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

因此你有两个问题:

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