如何在没有提交历史记录的情况下创建一个可见的 github 分支?

How to make a visible github fork without the commit history?

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

问题是到目前为止我尝试过的所有解决方案最终都会在 GitHub Network 图表中形成一个 差距 。这可能是因为它们都依赖于 removing/restoring .gitforce 推动,这似乎导致 GitHub UI 断开连接clone/fork,但它最终看起来像这样:

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

所以问题是:

如何在 GitHub 的 Network 图表中保持分叉依赖,同时仍然删除大部分提交历史记录?

(我知道我无法删除 整个 历史记录并且仍然有 something 在图表中连接,但不应该有可能以这样的方式压缩 fork,即 A 中的所有提交都变成 one 压缩提交(从 fork 中看到),而 [= =17=]正常吗?)


我看过这些答案,但它们没有太大帮助:

这些行是直接从 git 历史记录中生成的。如果没有分叉(或提交)的历史记录,则不会有行。

总之,想要线路,需要fork。

我认为正确的答案是:

  • 如果你修改Repo-A的你自己的fork(Repo-B)的pre-fork历史在任何方式中,Insights > Network 图形 将从分叉中断开。
  • 您的 GitHub 分支仍将显示它是从 Repo-A 分支而来的。
  • 如果您不想使用具有如此悠久历史的叉子,则:
    1. 创建一个新的分支,历史被压缩
    2. 使用 GitHubs UI 进行分叉,然后 squash 历史记录(或将内容替换为浅层 克隆。)