Git:你如何 fork 以打破与原始仓库的联系?

标签 git

我想 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/

相关文章:

git - 如何用 git push 覆盖,覆盖对 git 服务器的更改?

Git:使用 git clean 排除一个文件

Git:如何忽略一个存储库中的文件并将其添加到另一个存储库?

java - 在多个分支中使用分支

eclipse - Git 忽略 Eclipse 中的特定文件

python - Git 不跟踪 virtualenv 中的更改

带有代码审查的 git rebase 流程?可能的?

python - Git Heroku 错误 [远程拒绝] ...(预接收 Hook 被拒绝)

git - 如何在 Git 中标记旧提交?

html - 我的 Gitlab 存储库中的 Web 访问 HTML 文件