GitHub:如何使公共存储库的分支私有化?
我如何分叉一个公共存储库,但使我的分叉私有?我有支持私有存储库的订阅。您必须复制回购协议 您可以查看此文档(从github) 要在不分叉的情况下创建存储库的副本,需要对原始存储库运行一个特殊的clone命令,然后镜像推送到新存储库 在以下情况下,您尝试推送到的存储库(如exampleuser/new repository或exampleuser/mirrored)应该已经存在于GitHub上。有关更多信息,请参阅“创建新存储库” 镜像存储库 要进行精确复制,您需要执行裸克隆和镜像推送 打开命令行,然后键入以下命令:GitHub:如何使公共存储库的分支私有化?,git,eclipse,github,egit,Git,Eclipse,Github,Egit,我如何分叉一个公共存储库,但使我的分叉私有?我有支持私有存储库的订阅。您必须复制回购协议 您可以查看此文档(从github) 要在不分叉的情况下创建存储库的副本,需要对原始存储库运行一个特殊的clone命令,然后镜像推送到新存储库 在以下情况下,您尝试推送到的存储库(如exampleuser/new repository或exampleuser/mirrored)应该已经存在于GitHub上。有关更多信息,请参阅“创建新存储库” 镜像存储库 要进行精确复制,您需要执行裸克隆和镜像推送 打开命令行
$ 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
目前的答案有点过时,为了清楚起见: 简单的回答是:
这在GitHub上有记录:现在还有一个选项(2015年1月)
答案是正确的,但没有提到如何在公共回购和fork之间同步代码 以下是完整的工作流程(我们在开源之前已经做过):
首先,复制其他人所说的回购协议(细节): 通过创建一个新的回购(我们称之为
私人回购
)。然后:
克隆私有回购协议,以便您可以对其进行操作:
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
太棒了,你的私人回购现在有来自公共回购的最新代码以及你的更改
最后,要创建拉取请求private repo->public repo:
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
使用GitHub UI创建公共回购的分支(公共回购页面右上角的小“分支”按钮)。然后:
现在,您可以通过Github UI为公共回购创建拉取请求,如下所述
一旦项目负责人审查了您的请求,他们就可以合并它
当然,整个过程可以重复(只需省略添加遥控器的步骤) GitHub现在有一个导入选项,可以让您选择新导入的存储库是公共的还是私有的 只需转到 在“旧存储库的克隆URL”部分粘贴所需的repo URL,并在“隐私”中选择
Private
2021更新
我是git新手,因此希望在EclipseGUI(v2020-12;eGitV5.11)中尽可能多地使用git。详情如下
-->其他答案中的导入方法仅为Subversion、Mercurial或TFS项目设计正如我第一手了解到的,GitHub不支持git项目。这可能有效,但为什么要冒险呢
存储库和GitHub连接
eclipse/org.aspectj
是原始的公共回购协议,上游
远程获取cb4/org.aspectj
是用于推送的叉子和原点
遥控器cb4/remPrivAJ
是远程私有回购,而private
是远程推送I:\local
是本地回购协议
对于github身份验证,我使用了带有ed25519密钥()的ssh,因此我的连接URI如下所示:ssh://git@github.com/
表示法:->
是鼠标单击或选择<代码>右键->是右键单击
步骤
- 3.1
->克隆Git存储库并将克隆添加到此视图->克隆URI->下一步
- 3.1.1根据需要输入URI、连接和身份验证信息
->Next
- 3.1.2。选择所需的分支(我只选择了主分支)
->下一步
- 3.1.3。输入本地repo的目标目录
- 3.1.4。立即导入项目或稍后再导入,然后完成以填充本地回购
- 3.1.1根据需要输入URI、连接和身份验证信息
- 3.2。将原始公共回购配置为一个名为
的新远程回购,用于下拉更新upstream
- 3.2.1<代码>右侧->远程->创建远程->并输入名称
上游
- 3.2.2<代码>->配置获取->创建->更改->输入原始回购URI
->完成
- 3.2.3<代码>->保存和获取->下载所有分支
->关闭
- 3.2.4。注意:我只想要主分支,因此这一步而不是步骤3.2.3
- 3.2.5
在->Advanced
下,删除其中的单个条目获取规范
- 3.2.6。在
选择addcreate/updatespecification->Source ref:下拉列表下
master[branch]->+addspec->Force update
- 3.2.7<代码>->在上游配置中保存规范->完成->保存并获取->仅下载主分支
->Clos
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
git clone --bare git://github.com/eclipse/org.aspectj.git tmpRepo <if prompted, enter ssh passphrase> cd tmpRepo git push --mirror ssh://git@github.com:cb4/private.git <if prompted, enter ssh passphrase> cd .. rmdir tmpRepo /s /q
- 3.2.1<代码>右侧->远程->创建远程->并输入名称