Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitHub:如何使公共存储库的分支私有化?_Git_Eclipse_Github_Egit - Fatal编程技术网

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

GitHub:如何使公共存储库的分支私有化?,git,eclipse,github,egit,Git,Eclipse,Github,Egit,我如何分叉一个公共存储库,但使我的分叉私有?我有支持私有存储库的订阅。您必须复制回购协议 您可以查看此文档(从github) 要在不分叉的情况下创建存储库的副本,需要对原始存储库运行一个特殊的clone命令,然后镜像推送到新存储库 在以下情况下,您尝试推送到的存储库(如exampleuser/new repository或exampleuser/mirrored)应该已经存在于GitHub上。有关更多信息,请参阅“创建新存储库” 镜像存储库 要进行精确复制,您需要执行裸克隆和镜像推送 打开命令行

我如何分叉一个公共存储库,但使我的分叉私有?我有支持私有存储库的订阅。

您必须复制回购协议

您可以查看此文档(从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月)

  • 创建新的私人回购协议
  • 在空回购屏幕上有一个“导入”选项/按钮
  • 单击它并放置现有的github repo url 没有提到github选项,但它也适用于github回购协议。
  • 完成

  • 答案是正确的,但没有提到如何在公共回购和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/

    表示法:
    ->
    是鼠标单击或选择<代码>右键->是右键单击


    步骤

  • 在github上,原始的公共回购协议将发送到您的github帐户
  • 在github上
  • 在EclipseGit透视图中,将fork克隆到新的本地repo并对其进行配置
    • 3.1
      ->克隆Git存储库并将克隆添加到此视图->克隆URI->下一步
      • 3.1.1根据需要输入URI、连接和身份验证信息
        ->Next
      • 3.1.2。选择所需的分支(我只选择了主分支)
        ->下一步
      • 3.1.3。输入本地repo的目标目录
      • 3.1.4。立即导入项目或稍后再导入,然后完成以填充本地回购
    • 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