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月)
- 创build一个新的私人回购
- 在空的回购屏幕上有一个“导入”选项/button
- 点击它,把现有的github回购url没有提到github选项,但它也可以与github回购。
- DONE
目前的答案有点过时,所以为了清楚起见:
简短的回答是:
- 做一个公共回购的光圈克隆 。
- 创build一个新的私人的。
- 做一个镜子推到新的私人之一。
这是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