我如何分叉一个公共存储库,但使我的分叉私有?我确实订阅了支持私有存储库。
当前回答
去https://github.com/new/import吧。
在“您的旧存储库的克隆URL”部分粘贴您想要的回购URL,并在“隐私”中选择“私有”。
其他回答
你必须复制一份回购
你可以看到这个文档(来自github)
To create a duplicate of a repository without forking, you need to run a special clone command against the original repository and mirror-push to the new one. In the following cases, the repository you're trying to push to--like exampleuser/new-repository or exampleuser/mirrored--should already exist on GitHub. See "Creating a new repository" for more information. Mirroring a repository To make an exact duplicate, you need to perform both a bare-clone and a mirror-push. Open up the command line, and type these commands: $ 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 If you want to mirror a repository in another location, including getting updates from the original, you can clone a mirror and periodically push the changes. $ 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 As with a bare clone, a mirrored clone includes all remote branches and tags, but all local references will be overwritten each time you fetch, so it will always be the same as the original repository. Setting the URL for pushes simplifies pushing to your mirror. To update your mirror, fetch updates and push, which could be automated by running a cron job. $ git fetch -p origin $ git push --mirror
https://help.github.com/articles/duplicating-a-repository
目前的答案有点过时了,所以,为了清楚起见:
简单的回答是:
做一个公共回购的纯克隆。 创建一个新的私有的。 做一个镜像推送到新的私有。
这在GitHub上有文档:复制一个存储库
现在多了一个选择(2015年1月)
创建一个新的私有回购 在空的回购屏幕上有一个“导入”选项/按钮 点击它,并把现有的github回购url 没有github选项提到,但它与github回购工作太。 完成
去https://github.com/new/import吧。
在“您的旧存储库的克隆URL”部分粘贴您想要的回购URL,并在“隐私”中选择“私有”。
答案是正确的,但没有提到如何在公共回购和分叉之间同步代码。
以下是完整的工作流程(我们在开源React Native之前就已经这样做了):
首先,复制其他人所说的回购(详情在这里):
通过Github UI创建一个新的回购(让我们称之为私有回购)。然后:
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
太棒了,您的私人回购现在有来自公共回购的最新代码加上您的更改。
最后,创建一个pull request private repo -> public repo:
使用GitHub UI创建公共回购的fork(公共回购页面右上方的小“fork”按钮)。然后:
git clone https://github.com/yourname/the-fork.git
cd the-fork
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为公共回购创建一个拉请求,如下所述。
一旦项目所有者审查了您的pull请求,他们就可以合并它。
当然,整个过程可以重复(只需省略添加遥控器的步骤)。
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?