【发布时间】:2022-03-10 19:21:30
【问题描述】:
如何让 GitHub 忘记或解除我的 repo 最初是另一个项目的 fork 的关联?
我在 GitHub 中创建了一个项目。我现在可以看到“从任何/任何东西分叉”。不再维护父存储库“whatever/whatever”。我被允许继续使用原始存储库的代码库来创建一个独立的存储库。
有没有办法将我的项目从原始存储库中分离出来?
【问题讨论】:
标签: github
如何让 GitHub 忘记或解除我的 repo 最初是另一个项目的 fork 的关联?
我在 GitHub 中创建了一个项目。我现在可以看到“从任何/任何东西分叉”。不再维护父存储库“whatever/whatever”。我被允许继续使用原始存储库的代码库来创建一个独立的存储库。
有没有办法将我的项目从原始存储库中分离出来?
【问题讨论】:
标签: github
您可以contact github support 并要求他们将您的存储库切换到“正常模式”。
在this page,“Commit was made in a fork”段落中,解释说必须通过支持才能切换。因此,您自己可能无法做到这一点(除非您销毁并重新创建之前解释过的回购协议......如果您这样做,如果您的项目附有门票或维基,请小心,因为它们em>将删除!)。
2022 年 1 月更新:
在https://support.github.com/request/fork 使用 GitHub 聊天机器人虚拟助手。
【讨论】:
您可以从 GitHub UI 将分叉的存储库复制到新的存储库(没有分叉依赖项),然后删除原来的分叉:
注意:这种方法不会保留问题和拉取请求。
【讨论】:
确保您的本地存储库中有所有重要的分支和标签,删除 github 存储库,通过常规方式(不分叉)重新创建存储库,并使用 git push --all 将本地存储库推回。请注意,如果您有不想发布的本地分支,可能值得为该操作创建一个临时的干净本地克隆。
但是,这也将摆脱 wiki 和问题。由于 wiki 实际上是它自己的存储库,因此可以通过克隆它然后重新创建和推送来类似地处理它。仓库地址在 wiki 的 Git 访问页面 (git@github.com:user/repo.wiki.git)。
这会留下问题。可以通过API导出,但据我所知,你只能用你的人创建issues和cmets,所以完美导入是不可能的。
因此,如果您需要保留问题,则应按照 Thomas Moulard 的建议通过 github 支持。
【讨论】:
我遇到了类似的问题,最后用这个github help page 来解决它。我不介意 wiki 和问题跟踪器,因为我的博客使用了由其他用户开发的主题。
要分离一个分叉的 repo 并在多次提交后将其用作您自己的 repo,而不会丢失整个历史记录:
git clone --bare git@github.com:user/forked_repo.git
在 github 网站上创建一个新的空存储库new-repository。
并推送镜像版本:
cd user.github.com.git/
git push --mirror git@github.com:user/new-repository.git
可以在 github 上重命名 forked_repository 并使用另一个名称作为备份并在需要时检查更新。或者干脆删除它。
将new-repository 重命名为原始名称即可。作为副作用,您的提交现在出现在您的历史记录中。
【讨论】:
这仅适用于 GitHub Enterprise,不适用于 github.com
登录到具有管理员权限的帐户:
https://<ghe url>/<org>/<repo>
这是在 GitHub Enterprise 2.9 上测试的
【讨论】:
使用来自 aurelien 和 Clayton 的信息,我可以通过以下方式做到这一点:
$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror
这是documentation for git clone --bare:
创建一个裸 Git 存储库。也就是说,不是创建
<directory>并将管理文件放在<directory>/.git中,而是将<directory>本身设置为$GIT_DIR。这显然意味着 -n 因为没有地方可以检查工作树。远程的分支头也直接复制到相应的本地分支头,而不将它们映射到refs/remotes/origin/。使用此选项时,既不会创建远程跟踪分支,也不会创建相关的配置变量。
这是documentation for git push --mirror:
不是命名要推送的每个 ref,而是指定将
refs/下的所有 ref(包括但不限于refs/heads/、refs/remotes/和refs/tags/)镜像到远程存储库。新创建的本地 refs 会被推送到远端,本地更新的 refs 会在远端强制更新,删除的 refs 会从远端移除。如果设置了配置选项remote.<remote>.mirror,这是默认设置。
注意:与其他基于 git 的答案一样,这不会复制不属于 git 存储库的问题,例如 wiki 和问题。每塔皮奥:
git@github.com:user/repo.wiki.git。【讨论】:
使用您的凭据登录 GitHub。
转到https://support.github.com/contact?tags=rr-forks&subject=Detach%20Fork&flow=detach_fork。
输入fork的URL或repo名称your-user-name/repository-name,并回答虚拟助手的其他问题。
您将收到一封包含票号的电子邮件,您可以在其中查看您的请求状态。一旦你的 repo 被分叉,你也会通过电子邮件收到通知。
注意:我可以在 Chrome 和 Edge 中使用虚拟助手,但不能在 Firefox 中使用。此外,在分离回购后,我的票的状态仍处于待处理状态。我猜 GitHub 最终会在他们的过程中修复这些故障。
【讨论】:
如果您不需要任何过去的提交(在我的情况下不需要),您可以:
之后,您可以从您的 github 帐户中删除分叉。花了我一分钟,工作就像一个魅力。
【讨论】: