Git: 你是如何为了与原始仓库断绝关系而进行分叉的?
Git: How do you fork with the intention of breaking ties with the original repo?
我想分叉一个回购,目的是与原始回购断绝关系。不会有拉取请求或任何未来的合并。新的 repo 将有一个新的项目名称。我不复制源文件并从头开始一个全新的 repo 的唯一原因是因为我想保留提交历史。我该怎么做?
澄清:我使用Github。我以前并不知道有什么 Github-specific。对于我的特定需求,我有一个 git 存储库,其中包含两个独立的项目(一个 Scala,一个 Java)。这两个项目的文件已经开始相互干扰,所以我要 fork 存储库,并在新的存储库中删除 Scala 项目的所有文件。在原始存储库中,我将删除 Java 项目的所有文件。
如果您打算保留原始项目中的所有内容(或几乎所有内容),我会像往常一样分叉它并开始大量修改它。
如果您只想要文件的一小部分,您可以使用 filter-branch
从整个历史记录中删除不需要的存储库部分。此步骤将更改每个提交的 SHA,并使其无法(至少自动)从原始文件中提取或合并。不过,没有必要这样做。
如果您担心意外的跨项目污染,您可以使用 filter-branch
步骤来确保历史不兼容,即使您保留了大部分文件。如果没有要删除的东西,你可以做一些简单的事情,比如重写初始提交的提交消息。
如果这是一个 github 问题,我认为您需要做的是将存储库克隆到本地计算机,在 github (而不是分叉原来的)然后推送到新项目。 Github 据我所知,不会弄清楚这种关系。但如果您担心的话,在初始克隆和推送之间仍然存在 filter-branch
。
我想分叉一个回购,目的是与原始回购断绝关系。不会有拉取请求或任何未来的合并。新的 repo 将有一个新的项目名称。我不复制源文件并从头开始一个全新的 repo 的唯一原因是因为我想保留提交历史。我该怎么做?
澄清:我使用Github。我以前并不知道有什么 Github-specific。对于我的特定需求,我有一个 git 存储库,其中包含两个独立的项目(一个 Scala,一个 Java)。这两个项目的文件已经开始相互干扰,所以我要 fork 存储库,并在新的存储库中删除 Scala 项目的所有文件。在原始存储库中,我将删除 Java 项目的所有文件。
如果您打算保留原始项目中的所有内容(或几乎所有内容),我会像往常一样分叉它并开始大量修改它。
如果您只想要文件的一小部分,您可以使用 filter-branch
从整个历史记录中删除不需要的存储库部分。此步骤将更改每个提交的 SHA,并使其无法(至少自动)从原始文件中提取或合并。不过,没有必要这样做。
如果您担心意外的跨项目污染,您可以使用 filter-branch
步骤来确保历史不兼容,即使您保留了大部分文件。如果没有要删除的东西,你可以做一些简单的事情,比如重写初始提交的提交消息。
如果这是一个 github 问题,我认为您需要做的是将存储库克隆到本地计算机,在 github (而不是分叉原来的)然后推送到新项目。 Github 据我所知,不会弄清楚这种关系。但如果您担心的话,在初始克隆和推送之间仍然存在 filter-branch
。