Git 将公共存储库分叉为私有存储库并接收公共提交

Git 将公共存储库分叉为私有存储库并接收公共提交,git,github,bitbucket,Git,Github,Bitbucket,让我们拥有公共github存储库(A) 我想将此存储库作为私有回购(B)分叉到bitbucket 我想接收从存储库A到存储库B的公共提交。 有可能吗? 在名为B的BitBucket中创建一个新的私有存储库。本地克隆B 转到存储库B。使用GitHub存储库(repoA)的URL添加一个新的远程(比如repoA) 将更改推送到存储库B(BitBucket) 获取存储库A的所有分支 $ git fetch repoA $ git fetch repoA 使用a分支的历史记录创建一个新分支(

让我们拥有公共github存储库(A)

我想将此存储库作为私有回购(B)分叉到bitbucket

我想接收从存储库A到存储库B的公共提交。

有可能吗?

  • 在名为
    B
    的BitBucket中创建一个新的私有存储库。本地克隆
    B
  • 转到存储库
    B
    。使用GitHub存储库(repoA)的URL添加一个新的远程(比如repoA)

  • 将更改推送到存储库B(BitBucket)


获取存储库A的所有分支

$ git fetch repoA
$ git fetch repoA
使用a分支的历史记录创建一个新分支(例如,
next

将本地
next
分支更改推送到存储库B的
next
分支

$ git push origin next

将来,请与存储库A保持同步

$ git fetch repoA
$ git fetch repoA
现在,将A的分支拉入B的分支,或者,只需签出到一个新分支,如上面的示例所示。然后推到B的存储库


注意
repoA
是存储库A的URL,
来源
是存储库B的URL。

有几种方法可以做到这一点:

  • 只是严格地镜像回购协议,而不是试图在本地副本中进行开发工作
  • 在本地工作区中进行开发工作,同时将推/拉至两个不同的远程位置作为工作流程的一部分
  • 对于镜像副本(例如,所有分支),其在github文档中的描述非常清楚:。但是,请注意,这些方法严格适用于镜像回购协议,即它们创建不适合本地开发工作的裸本地回购协议

    简言之:

    A.对于一次性镜像副本:

    $ git clone --bare https://github.com/exampleuser/A.git
    $ cd A.git
    $ git push --mirror https://github.com/exampleuser/B.git
    $ cd ..
    $ \rm -rf A.git
    
    B.对于正在进行的镜像复制:

    $ git clone --bare https://github.com/exampleuser/A.git
    $ cd A.git
    $ git push --mirror https://github.com/exampleuser/B.git
    $ cd ..
    $ \rm -rf A.git
    
    设置-首先创建目标Bitbucket repo,然后在本地创建

    $ git clone --mirror https://github.com/exampleuser/A.git
    $ cd A.git
    $ git remote set-url --push origin https://bitbucket.com/exampleuser/B.git
    
    然后根据需要,将更改从A拉到B

    $ cd A.git
    $ git fetch -p origin
    $ git push --mirror
    

    谢谢你的快速回答!github的原始存储库(A)包含两个分支
    master
    next
    ,而
    next
    是我最需要的。现在我完成了您提到的所有操作,但在我的存储库中看不到该分支。我应该如何接收从存储库(A)到存储库(B)的新提交,以便它保持同步?谢谢
    git fetch repoA--all
    中的
    --all
    不会获取所有分支<代码>--all从所有配置的远程repo获取<代码>--所有以及回购参数都将出错。默认情况下,远程设备通常配置为获取所有分支,因此只需
    git fetch repoA
    即可获取所有分支。同意。更新答案。谢谢
    $ cd A.git
    $ git fetch -p origin
    $ git push --mirror