您如何在GitHub上创建自己的存储库?


164

我在GitHub上有一个公共存储库。我想复制/复制它并在基于该存储库的新项目上工作,但我不想影响它的现状。我尝试使用GitHub UI分叉它,但是它什么也没做。


4
您到底想达到什么目的?也许您可以通过分支解决它?
Artefact2 2012年

4
我想获得该项目的副本,并将该项目扩展为做其他事情,但又不影响原始项目。就是这样 无论如何,它解决了。
WowBow 2012年

1
@ Artefact2 ..抱歉,我认为mcepl的解决方案解决了我的需求,但是没有。使用'git clone'克隆项目后,我不想指向原始存储库,而是指向我在github上创建的新存储库。我该如何实现?
WowBow 2012年

1
@ Artefact2你有我的问题吗?
WowBow 2012年

1
与创建新仓库相比,fork的好处是图形和网络历史链接在一起。可惜Github不允许这样做。
kenchew

Answers:


205

我认为您无法分担自己的存储库。
克隆它并将其推送到新的仓库是件好事,但是您需要:

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 importer,可以从另一个来源(包括GitHub)导入存储库。
请参阅“ 使用GitHub Importer导入存储库

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

NARF答案(upvoted)也示出了这个过程。

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

再说一遍:您得到的是一个副本,而不是真正的fork:您不能从新的仓库向旧的仓库提出拉取请求。

再次(之二),如所述的评价通过mpersico,这是一个TRUE FORK。

如果我有一个foo,它是我希望其他人进行分叉并有权执行PR的开源项目的规范源回购,那么我不想在该回购中工作,我希望我可以使用发出的分叉针对我的项目进行适当的PR。
我已经在GitHub上创建了第二个帐户并将其分叉,从而解决了这个问题。


谢谢@VonC。我想您忘记提及编辑配置文件了。
WowBow 2012年

1
我说的是.git / config。除非您更改原始URL,否则当您说“ git remote add ....”时,它将拒绝您,因为原始名称已经存在。但是,一旦我在配置文件中更改了网址,它就可以正常工作。您指向我的文章说明了这一点。
WowBow 2012年

7
@WowBow(如果remote已经存在),则执行一个git remote set-url origin https://github.com/userName/New_Repo。这将为您更改.git/config文件。参见git-scm.com/docs/git-remote
VonC

1
@aus是预期的,您可以从上游获取。请参阅stackoverflow.com/a/33360766/6309
VonC

1
我仍然觉得应该允许从同一组织的回购中分叉。如果有一个每个人都通用的中央存储库,而您想一直从中获取更新,同时又根据需要对派生副本进行特定更改,该怎么办?
Prachi

107

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

  1. 复制您的回购网址。例如:(https://github.com/YourName/YourOldRepo提示:这是当您在github上查看仓库的主页时的URL。
  2. 单击右上角的+图标。
    https://i.stack.imgur.com/9zJgo.png
  3. 选择“导入存储库”。
  4. 在要求“旧URL”的地方,粘贴您在步骤1复制的URL
    https://i.stack.imgur.com/vgWd3.png
  5. 输入新仓库的名称,然后单击Begin Import
  6. 而已!现在,您将拥有完整回购的副本,其中包含所有提交历史记录和分支!

局限性:这实际上不是真正的叉子。这是回购的副本。不允许来回拉动请求。


4
我在2010年的旧答案中忘记了GitHub Importer(于2016年发布):我已经添加了对该工具以及您答案的引用。
VonC



4

只需克隆它,创建新的空白仓库,然后推送到它即可。


1
谢谢。我想得太多了。
WowBow 2012年

我将其克隆到本地计算机并创建了一个空白存储库,但是,当我尝试git origin github.com/userName/New_Repo.git ..时,它说远程起源已经存在。我该怎么解决?
WowBow 2012年

现在,当我按下它时,它正在更改原始存储库。
WowBow 2012年

你能告诉我如何推送到新的仓库吗?我做了克隆并创建了新的存储库,但是我无法推送到新的存储库。
WowBow 2012年

5
您必须更换遥控器。否则,它将尝试推送到同一位置。 git remote rm origin其次是git remote add origin URL-to-new-repository
wadesworld 2012年

1

我按照这些“复制存储库”的官方说明进行操作,它似乎可以正常工作。

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

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


1

不幸的是,随着我的到来,VonC的公认解决方案对我不起作用

远程:找不到存储库

起作用的内容如下:

  1. 在github上创建一个new_repo
  2. git clone new_repo
  3. cd new_repo
  4. git remote添加上游old_repo.git
  5. git pull上游大师
  6. git push origin master

我从这里得到了以上所有内容。


1

对于不懂GitHub的人,这里有一个简单的解决方案,可以替代上面的其他好答案。您只需要一个GitHub Desktop应用程序即可。

  1. 从浏览器打开您自己的项目存储库,并以zip格式下载,例如your-project-master.zip
  2. 解压缩并将其重命名为新的存储库。
  3. 打开GitHub Desktop,然后通过浏览到未压缩的本地路径新仓库来添加新仓库。 在此处输入图片说明
  4. 通过单击发布按钮将其发布到您的github。不要忘记添加名称和描述:)


-1

刚刚尝试了一下,它起作用了:

  1. 将您的回购分叉到组织帐户中
  2. 重命名
  3. 将所有权转让给自己

4
不错的主意,但我只是尝试了一下却出现了错误:aspiers already has a repository in the UPSTREAM/NAME network
亚当·斯皮尔斯

这是因为在您重命名或转移您的存储库后,它们现在具有重定向。github.com
blog/

-1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.