首页 > 解决方案 > 如何在没有提交历史的情况下制作可见的 github fork?

问题描述

假设您想将旧的(GitHub)存储库A克隆到您自己的存储库B中。但是,您不需要任何分支,也不需要很长的提交历史。你想要的是一个浅层克隆,作为仓库最新状态的快照。最好只使用最新的提交消息,同时仍然显示A它是从哪个点分叉的。这在 GitHubInsights > Network选项卡中以图形方式显示,箭头从一个用户回购到另一个。

问题是到目前为止我尝试过的解决方案,最终都在 GitHub图表中出现了差距。Network这可能是因为它们都依赖于删除/恢复.git强制推送,这似乎会导致 GitHub UI 断开克隆/分叉,而最终看起来像这样:

在此处输入图像描述

我不确定如何最好地表达这个问题,因为已经有几十个听起来非常相似,如果不一样的话,而他们似乎都没有解决这个问题,如果可能的话。

所以问题是:

如何在 GitHubNetwork图表中保留 forks 依赖项,同时仍删除大部分提交历史记录?

(我知道我无法删除整个历史记录并且仍然在图表中连接了一些东西,但是不应该以这样一种方式压缩分叉,使所有提交A都变成一个压缩提交(从叉子),而所有新的B都是正常的?)


我已经查看了这些答案,但它们并没有太大帮助:

标签: gitgithubgit-cloneshallow-clone

解决方案


我认为正确的答案是:

  • 如果您以任何方式修改您自己的分叉 ( ) 的分叉前历史,则该将与分叉断开。Repo-BRepo-AInsights > Network
  • 您的GitHub fork 仍将显示它是从Repo-A.
  • 如果您不想使用历史悠久的分叉,则:
    1. 创建一个压缩历史的新分支
    2. 使用 GitHubs UI创建 fork ,然后压缩历史记录(或用克隆替换内容。)

推荐阅读