我在 GitHub 上有一个公共存储库。我想复制/复制它并基于此存储库处理一个新项目,但我不想影响它现在的状态。我尝试使用 GitHub UI 分叉它,但它没有做任何事情。
13 回答
我不认为你可以分叉你自己的回购。
克隆它并将其推送到一个新的仓库是好的,但你需要:
git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all
(见git push
)
请参阅“在 GitHub 上创建自己的项目”中描述的所有过程。
六年后(2016 年),您现在拥有GitHub 导入器,它允许您从其他来源导入存储库……包括 GitHub。
请参阅“使用 GitHub Importer 导入存储库”
这将允许您创建一个新存储库并将旧存储库的完整历史记录导入新存储库,使用其 GitHub url。
再说一遍:你得到的是一个副本,而不是一个真正的分叉:你不能从新的 repo 向旧的 repo 发出拉取请求。
再次(之二),如评论中所述,mpersico
这不是真正的叉子。
如果我有一个 foo ,它是一个开源项目的规范源代码库,我希望其他人可以 fork 并有权进行 PR,那么我不想在那个 repo 中工作,我想要一个可以用来发布的 fork针对我的项目的适当 PR。
我已经解决了这个问题,我在 GitHub 中创建了第二个帐户并进行了分叉。
一个超级简单的方法可以在 30 秒内从 GitHub 网站完成:
- 复制你的仓库的 URL。例如:(
https://github.com/YourName/YourOldRepo
提示:这是您在 github 上查看 repo 主页时的 URL。 - 单击右上角的
+
图标。
- 选择“导入存储库”。
- 在它要求提供“旧 URL”的地方,粘贴您在第 1 步复制的 URL
- 输入新仓库的名称并单击
Begin Import
。 - 就是这样!您现在拥有完整 repo 的副本,其中包含所有提交历史记录和分支!
限制:它实际上不是真正的分叉。这是回购的副本。它不允许来回拉取请求。
- git clone https://github.com/YOURREPO.git TargetRepoName
- cd TargetRepoName/
- git 远程 set-url 来源https://github.com/TargetRepoName.git
- git push -u 起源大师
达到预期效果的最简单方法是创建一个新的存储库,然后选择导入选项并提供您希望分叉的存储库的 URL。
下面的图片将有所帮助:
您现在可以将基础存储库标记为模板(在设置中,将其标记为模板存储库)并在存储库的主页上,单击使用此模板创建您的第二个存储库
Github 帮助:创建模板 仓库 从模板创建仓库
只需克隆它,创建新的空白仓库,然后推送到它。
虽然不可能将您自己的 repo 分叉到同一个帐户中,但可以将其放入一个自己拥有的组织帐户中,该帐户可以通过“+”按钮轻松免费创建。
此选项的主要优点是新的 repo 是原始 repo 的真正分支,而不仅仅是克隆。例如,这意味着您可以将原始存储库中的更改更新到新存储库中(克隆存储库不是这种情况)。
我看到的唯一缺点是分叉的 repo 不会出现在用户配置文件下,而是出现在组织配置文件下。
我按照“复制存储库”的这些官方说明进行操作,它似乎有效。
https://help.github.com/articles/duplicating-a-repository/
要在不分叉的情况下创建存储库的副本,您需要对原始存储库运行特殊的克隆命令并将镜像推送到新存储库。这适用于任何 git 存储库,而不仅仅是托管在 GitHub 上的那些。
不幸的是,接受的 VonC 解决方案对我不起作用
远程:未找到存储库
起作用的是以下内容:
- 在 github 创建一个 new_repo
- git clone new_repo
- cd new_repo
- git 远程添加上游 old_repo.git
- git pull 上游大师
- git push 起源大师
我从这里得到了以上所有内容。
刚试过这个,它奏效了:
- 将您的 repo 分叉到组织帐户中
- 重命名它
- 将所有权转回给自己
当你创建一个新的 repo 时,你可以使用 repo .git url 从另一个 repo 导入。我花了 30 秒。
- 在 github webfrontend 上创建一个新的空仓库
- 在旧仓库的克隆中,替换遥控器并推送:
git remote remove origin
git remote add origin git@github.com:account/new.git
git branch -M main
git push -u origin main
这结合了@mcepl 的答案和@wadesworld 的评论,与在 github 上创建新存储库时显示的官方解决方案非常相似(在标题下“ …或从命令行推送现有存储库”)