我想 fork 一个 repo 协议(protocol),目的是与原始 repo 协议(protocol)断绝关系。不会有 pull 请求或任何 future 的 merge 。新的 repo 将有一个新的项目名称。我不复制源文件并从头开始一个全新的 repo 的唯一原因是因为我想保留提交历史。我该怎么做?
澄清:我确实使用 Github。我以前并不知道有任何特定于 Github 的内容。对于我的特定需求,我有一个 git 存储库,其中包含两个独立的项目(一个 Scala,一个 Java)。这两个项目的文件已经开始相互干扰,所以我要 fork 存储库,并在新的存储库中删除 Scala 项目的所有文件。在原始存储库中,我将删除 Java 项目的所有文件。
最佳答案
如果您打算保留原始项目中的所有内容(或几乎所有内容),我会照常进行 fork 并开始大量修改。
如果您只想要文件的一小部分,您可以使用 filter-branch
从整个历史记录中删除您不需要的存储库部分。此步骤将更改每个提交的 SHA,并使其无法(至少自动)从原始文件中提取或 merge 。不过,没有必要这样做。
如果您担心意外的跨项目污染,您可以使用 filter-branch
步骤来确保历史不兼容,即使您保留了大部分文件。如果没有要删除的内容,您可以做一些简单的事情,例如重写初始提交的提交消息。
如果这是一个 github 问题,我认为您需要做的是将 repo 克隆到本地计算机,在 github 上创建一个新项目(而不是 fork 原始项目),然后推送到新项目。据我所知,Github 不会弄清楚这种关系。但如果您担心的话,在初始克隆和推送之间仍然存在 filter-branch
。
关于Git:你如何 fork 以打破与原始仓库的联系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28116314/