将公共存储库分成私有并接收公共提交

时间:2017-05-09 09:10:07

标签: git github bitbucket

让我们拥有公共github存储库(A)https://github.com/schacon/example

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

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

有可能吗?

2 个答案:

答案 0 :(得分:2)

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

    $ git remote add repoA <A-repo-url>
    $ git remote -v                     # see the remotes
    
  • 将A存储库的提交/更改提取到存储库B中。

    $ git pull repoA master             # B's master = A's origin/master
    
  • 将更改推送到存储库B(BitBucket)。

    $ git push origin HEAD              # B's origin/master = A's origin/master
    

获取存储库A的所有分支。

$ git fetch repoA

创建一个包含A分支历史的新分支(例如,next

$ git checkout -b next repoA/next    # create a local 'next' branch = repoA/next

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

$ git push origin next

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

$ git fetch repoA

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

注意 repoA是您的存储库A的URL,origin是存储库B的URL。

答案 1 :(得分:0)

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

  1. 严格反映回购 - 不要尝试在本地副本中进行开发工作
  2. 在推送/拉动2个不同的遥控器作为工作流程的一部分时,在本地工作区中进行开发。
  3. 对于镜像副本(例如所有分支),它在github文档中非常清楚地涵盖了https://help.github.com/articles/duplicating-a-repository/。但请注意,这些方法严格用于镜像回购,即它们创建了不适合进行本地开发工作的裸本地回购。

    简而言之:

    一个。对于一次性镜像副本:

    $ 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中。对于正在进行的镜像副本:

    设置 - 首先创建目标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