你如何在GitHub上分叉你自己的存储库?

时间:2012-06-09 19:22:13

标签: git github version-control git-fork

我在GitHub上有一个公共存储库。我想复制/复制它并处理基于此存储库的新项目,但我不想影响它现在的状态。我尝试使用GitHub UI进行分叉,但它没有做任何事情。

13 个答案:

答案 0 :(得分:155)

我认为你不能分叉你自己的回购 克隆它并推送到一个新的回购是好的,但你需要:

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

请参阅“Fork your own project on GitHub”中描述的所有流程。


六年后(2016年),您现在拥有GitHub importer,允许您从其他来源导入回购...包括GitHub。
请参阅“Importing a repository with GitHub Importer

https://help.github.com/assets/images/help/importer/import-repository.png

narfanswer(upvoted)也说明了这一过程。

这将允许您创建一个新的存储库,并使用其GitHub URL将旧的存储库的完整历史记录导入到新的存储库中。

再说一遍:你得到的是一个副本,而不是一个真正的分支:你不能从新的回购请求到旧回购。

再次(bis),如in the comments所述mpersico FORK。

  

如果我有一个foo,这是一个开源项目的规范源代码,我希望其他人分叉并有权进行PR,那么我不想在那个回购中工作,我想要一个我可以的分叉用来对我的项目发出适当的PR   我已经解决了这个问题,我在GitHub中创建了第二个帐户,然后向它求助。

答案 1 :(得分:75)

从GitHub网站30秒内完成此操作的超级简单方法:

  1. 复制您的回购网址。例如:https://github.com/YourName/YourOldRepo(提示:当您在github上查看您的回购首页时,它就是网址。
  2. 点击右上角的+图标 https://i.stack.imgur.com/9zJgo.png
  3. 选择"导入存储库"。
  4. 如果要求提供"旧网址",请粘贴您在步骤#1中复制的网址 https://i.stack.imgur.com/vgWd3.png
  5. 输入新回购的名称,然后点击Begin Import
  6. 那就是它!您现在拥有完整仓库的副本,包含所有提交历史记录和分支!
  7. 限制:它实际上并不是真正的分叉。它是回购的副本。它不允许来回做拉取请求。

答案 2 :(得分:6)

  1. git clone https://github.com/YOURREPO.git TargetRepoName
  2. cd TargetRepoName /
  3. git remote set-url origin https://github.com/TargetRepoName.git
  4. git push -u origin master

答案 3 :(得分:3)

只需克隆它,创建新的空白回购,然后推送到它。

答案 4 :(得分:2)

实现所需效果的最简单方法是创建一个新的存储库,然后选择导入选项并将URL提供给您希望分叉的存储库。

以下图片有助于:

Fork own repo via import-1

Fork own repo via import-2

答案 5 :(得分:1)

我按照这些官方说明进行了#34;复制存储库"它似乎有效。

https://help.github.com/articles/duplicating-a-repository/

  

要创建存储库的副本而不进行分支,您需要针对原始存储库运行特殊克隆命令并镜像推送到新存储库。这适用于任何git存储库,而不仅仅是在GitHub上托管的存储库。

答案 6 :(得分:1)

不幸的是,VonC的公认解决方案对我来说并不适用,因为我得到了

  

remote:找不到存储库

以下是什么工作:

  1. 在github上创建一个new_repo
  2. git clone new_repo
  3. cd new_repo
  4. git remote add upstream old_repo.git
  5. git pull upstream master
  6. git push origin master
  7. 我从here获得了以上所有内容。

答案 7 :(得分:1)

对于使用GitHub的非技术人员,这里有一个简单的解决方案,作为上述其他优秀答案的替代方案。你需要的只是一个GitHub桌面应用程序。

  1. 从浏览器打开您自己的项目仓库,并以zip格式下载,例如your-project-master.zip
  2. 解压缩并将其重命名为新的回购。
  3. 打开GitHub桌面,通过浏览到解压缩的本地路径新回购添加新的回购。 enter image description here
  4. 通过单击“发布”按钮将其发布到您的github。不要忘记添加名称和描述:)

答案 8 :(得分:0)

您现在可以将基础存储库标记为模板(在“设置”中,将其标记为模板存储库),然后在存储库的主页上,单击使用此模板创建第二个仓库

Github帮助:creating a template repository creating a repository from a template

答案 9 :(得分:0)

尽管无法将自己的存储库分叉到同一帐户中, 可以将其保存到一个自有的组织帐户中,该帐户可以通过“ +”按钮免费免费创建。

此选项的主要优点是,新的仓库是原始仓库的真实分支,而不仅仅是克隆。 例如,这意味着您可以将原始仓库中的更改更新为新仓库中的更改(克隆仓库不是这种情况)。

我看到的唯一缺点是,分叉的仓库不会出现在用户个人资料下,而是出现在组织个人资料下。

答案 10 :(得分:0)

  1. 在 github webfrontend 上创建一个新的空仓库
  2. 在旧存储库的克隆中,替换遥控器并推送:
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 上创建新存储库时显示的官方解决方案非常相似(在标题“...或从命令行推送现有存储库”下) ")

答案 11 :(得分:-1)

试过这个,它起作用了:

  1. 将您的仓库分成一个组织帐户
  2. 重命名
  3. 将所有权转回给自己

答案 12 :(得分:-1)

创建新的仓库时,可以使用repo .git url从另一个仓库导入。我花了30个借调。