如何比较两个git存储库?

如何比较两个git存储库?,git,version-control,Git,Version Control,我已经将两种不同的CVS存储库导出到git中。他们在某个点上分歧,我正在调查原因。这条开发路线可以追溯到几年前,并有成千上万的用户提交 在开发行开始时,每次提交的SHA1 ID都是相同的,这告诉我git cvsimport在读取CVSP和导入结果时所做的事情是非常一致的 但是在第一次提交到昨天之间的某个时候,SHA1 ID开始出现分歧。我想通过比较每个存储库中的提交ID列表并查看缺少的内容来找出这一点。有什么好的工具或技术可以做到这一点吗?显而易见的方法是克隆一个存储库,将另一个存储库的主分支的

我已经将两种不同的CVS存储库导出到git中。他们在某个点上分歧,我正在调查原因。这条开发路线可以追溯到几年前,并有成千上万的用户提交

在开发行开始时,每次提交的SHA1 ID都是相同的,这告诉我git cvsimport在读取CVSP和导入结果时所做的事情是非常一致的


但是在第一次提交到昨天之间的某个时候,SHA1 ID开始出现分歧。我想通过比较每个存储库中的提交ID列表并查看缺少的内容来找出这一点。有什么好的工具或技术可以做到这一点吗?

显而易见的方法是克隆一个存储库,将另一个存储库的主分支的尖端提取到克隆中,并根据这两个尖端使用git merge base来找到共同的祖先。

为什么不将每个repo的git日志放到自己的文件中进行比较呢?最接近文件底部的差异是它们开始发散的地方…

由于两个git存储库的起点相同,您可以将它们拉到同一个工作存储库中

$ git remote add cvsimport-a git://.../cvsimport-a.git
$ git remote add cvsimport-b git://.../cvsimport-b.git
$ git remote update
$ git log cvsimport-a/master..cvsimport-b/master  # in B, not in A?
$ git log cvsimport-b/master..cvsimport-a/master  # in A, not in B?

在其中一份回购协议中,请执行以下操作:

$ git remote add other-repo git://.../other-repo.git
$ git remote update
$ git log other-repo/master...master
  # or maybe:
$ gitk master... other-repo/master
这就给了你两个回购协议之间的对称差异;这将显示一个repo中的所有提交,但不显示另一个repo。

您可以将两个存储库放入(获取)单个存储库,可以是新存储库,也可以是现有存储库中的一个,正如ephemient、Charles BaileyBrian Campbell的响应一样。或者你们可以使用GitWiki页面上的技巧,或者更确切地说,“如何比较两个本地存储库”的问题


但使用“git rev list”(或带有适当选项的“git log”)按拓扑顺序生成提交的SHA-1列表,并检查它们不同的第一个版本可能更简单。

我最近也有类似的需求。我有一个克隆的远程项目,需要与当前复制的代码库进行比较。git日志不相关,因为提交没有任何共同点,我不确定它们是否从同一个代码库分支

为了解决这个问题,我以蛮力的方式使用git。我将要签入git repo的文件复制到git repo中,然后检查
git状态
,查看更改的文件列表


此外,
git diff
还可用于进一步检查。我能够比较

中的文件,您可能需要在这些命令中使用cvsimport-a/master和cvsimport-b/master。此外,您还可以执行“git remote update”,而不是通过管道连接到xargs git fetch;git remote fetch cvsimport-b(不更新任何其他远程设备),但后来我改变了主意。。。完成。Git会抱怨一点,如果你不使用/master,但它可以工作。为了清楚起见,我会改变它。这实际上是我昨天做的事情,尽管今天我从其他答案中得到了一些建议,但我的理解有点超前。两个存储库开始出现分歧的地方离告诉我分歧之后产生的差异还有很长的路要走。对不起,问题不是这个。问题是如何比较两种回购协议。答案如下。提示和窍门链接给出了一个“未找到”,它是移动了还是消失了?Git Wiki第一次从移动到了,但入侵kernel.org后的第二次还没有回来(不知道它是否会在那里,或者可能在某处)。处于只读模式,因此所有链接都已更改。提示和技巧(又名GitTips)在这里提供:“获取其他回购协议主分支的提示”-如何做到这一点?找朋友/