查找两个 git 存储库在没有 git 历史的情况下分叉的位置

Find where two git repositories forked without git history

我正在寻找这两个存储库的确切分支位置,以便我可以看到对原始代码进行了哪些更改。

https://github.com/apache/cassandra

https://github.com/wlloyd/eiger

第二个没有 git 历史记录。我已经确定它不是任何版本的分支。有一些文件,例如 CHANGES.txt(我很确定)自 fork 以来没有被修改,也许这有帮助。也许有一个聪明的差异技巧?

没有历史记录,几乎不可能找到分叉的时间。

但是,如果您只对两个代码库之间的变化感兴趣(即:分叉和原始回购的当前 master),您可以执行以下操作:

  • 在本地克隆两个 repos(我假设它们是从同一个本地目录克隆的)
  • 运行 diff -r cassandra eiger | grep -v .git(也许您可以从 diff -rq cassandra eiger | grep -v .git 开始了解受影响的文件)

现在,如果您想大致了解何时进行了分叉,您可以尝试在原始仓库中找到提交,这样可以最大限度地减少差异的数量。你可以尝试这样的事情:

cd cassandra
for SHA_1 in $(git rev-list master); do
  git checkout $SHA_1
  pushd ..
  echo -n $SHA_1\; >> diffs.csv
  diff -r cassandra eiger | grep -v .git | wc -l >> diffs.csv
  popd
done

现在你只需要找到最小化第二列的线