GitHub:如何使公共存储库的分支私人?

我如何分叉公共存储库,但使我的叉私人? 我确实订阅了支持私有存储库。

答案是正确的,但不提及如何同步公共回购和叉之间的代码。

这里是完整的工作stream程(我们在开源采购React Native之前已经完成了这个工作):


首先,像其他人所说的那样复制回购(详情在这里 ):

通过Github UI创build一个新的回购(我们称之为private-repo )。 然后:

 git clone --bare https://github.com/exampleuser/public-repo.git cd public-repo.git git push --mirror https://github.com/yourname/private-repo.git cd .. rm -rf public-repo.git 

克隆私人回购,所以你可以工作:

 git clone https://github.com/yourname/private-repo.git cd private-repo make some changes git commit git push origin master 

从公共回购拉动新的热点:

 cd private-repo git remote add public https://github.com/exampleuser/public-repo.git git pull public master # Creates a merge commit git push origin master 

真棒,您的私人回购现在有公共回购的最新代码加上您的更改。


最后,创build一个拉请求私人回购 – >公共回购:

创build请求的唯一方法是推入公共回购。 这是因为你需要推到一个分支( 这是为什么 )。

 git clone https://github.com/exampleuser/public-repo.git cd public-repo git remote add private_repo_yourname https://github.com/yourname/private-repo.git git checkout -b pull_request_yourname git pull private_repo_yourname master git push origin pull_request_yourname 

现在简单地通过Github UI为public-repo创build一个pull request,如下所述。

一旦项目所有者审查您的拉取请求,他们可以合并它。

当然,整个过程可以重复(只是省略了添加遥控器的步骤)。

现在还有一个select(2015年1月)

  1. 创build一个新的私人回购
  2. 在空的回购屏幕上有一个“导入”选项/button 在这里输入图像说明
  3. 点击它,把现有的github回购url没有提到github选项,但它也可以与github回购。 在这里输入图像说明
  4. DONE

目前的答案有点过时,所以为了清楚起见:

简短的回答是:

  1. 做一个公共回购的光圈克隆
  2. 创build一个新的私人的。
  3. 做一个镜子推到新的私人之一。

这是logging在GitHub: 重复一个库

你必须复制回购

你可以看到这个文档(从github)

要创build存储库的副本而不分叉,需要针对原始存储库运行特殊的克隆命令,并镜像推送到新的存储库。

在以下情况下,您尝试推送的存储库(例如exampleuser / new-repository或exampleuser / mirrored)应该已经存在于GitHub上。 请参阅“创build新的存储库”以获取更多信息。

镜像存储库

为了完全重复,您需要执行裸副本和镜像推送。

打开命令行并input以下命令:

 $ git clone --bare https://github.com/exampleuser/old-repository.git # Make a bare clone of the repository $ cd old-repository.git $ git push --mirror https://github.com/exampleuser/new-repository.git # Mirror-push to the new repository $ cd .. $ rm -rf old-repository.git # Remove our temporary local repository 

如果您想镜像另一个位置的存储库(包括从原始位置获取更新),则可以克隆镜像并定期推送更改。

 $ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git # Make a bare mirrored clone of the repository $ cd repository-to-mirror.git $ git remote set-url --push origin https://github.com/exampleuser/mirrored # Set the push location to your mirror 

与裸副本一样,镜像克隆包含所有远程分支和标签,但是每次获取时,所有本地引用都将被覆盖,因此它总是与原始存储库相同。 设置推送url简化了推送到你的镜子。 要更新镜像,请获取更新并推送,这可以通过运行cron作业来自动执行。

 $ git fetch -p origin $ git push --mirror 

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