如何从GitHub克隆项目,但使用Bitbucket作为远程存储库

时间:2017-10-11 14:43:00

标签: git github bitbucket

我想从GitHub克隆一个开源项目,但我想使用Bitbucket作为我的远程存储库主机,因为它的私有仓库是免费的。

我不打算分叉/拉取请求,但是当原始项目更新时,我想将更新提取到我的本地存储库并合并。

我想最终我需要两个远程存储库。 (起源和上游?)

设置此类环境的正确/最安全的方法是什么?

1 个答案:

答案 0 :(得分:3)

我刚用GitHub上的一个项目测试了它:google-calendar-backup

首先,我登录了我的Bitbucket帐户并创建了一个名为google-calendar-backup的私人Git仓库。

然后,我做了以下步骤:
(注意:我在Windows上,因此您的计算机上的路径可能不同)

  1. 从GitHub克隆原始回购

    git clone https://github.com/christianspecht/google-calendar-backup C:\LocalDir
    
  2. 这将在本地仓库中创建一个指向GitHub的远程“原点” 由于你想主要使用Bitbucket,Bitbucket应该是“主要”远程origin,所以我们将重命名现有的。{/ p>

    cd c:\localdir
    git remote rename origin upstream
    
  3. 转到本地目录并添加Bitbucket repo作为第二个遥控器:

    git remote add origin https://bitbucket.org/christianspecht/google-calendar-backup
    
  4. (可选)显示两个遥控器:

    git remote -v
    

    在我的机器上,我得到了这个结果:

    origin  https://bitbucket.org/christianspecht/google-calendar-backup (fetch)
    origin  https://bitbucket.org/christianspecht/google-calendar-backup (push)
    upstream        https://github.com/christianspecht/google-calendar-backup (fetch)
    upstream        https://github.com/christianspecht/google-calendar-backup (push)
    
  5. 将所有分支推送到Bitbucket一次

    git push -u --all origin
    

    结果:

    Username for 'https://bitbucket.org': christianspecht
    Password for 'https://christianspecht@bitbucket.org':
    Counting objects: 30, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (30/30), done.
    Writing objects: 100% (30/30), 4.41 KiB | 0 bytes/s, done.
    Total 30 (delta 12), reused 0 (delta 0)
    To https://bitbucket.org/christianspecht/google-calendar-backup
     * [new branch]      master -> master
    Branch master set up to track remote branch master from origin.
    

    -u感谢origin - 我不知道这一点,我自己还在学习Git)

  6. 就是这样。现在您可以进行更改并推送到upstream(Bitbucket) 偶尔,您需要从@SpringBootApplication public class IssueTrackerApplication { public static void main(final String[] args) { System.out.println("coming here.0000.."); SpringApplication.run(IssueTrackerApplication.class, args); } } (GitHub)拉出来从原始项目中获取新的更改。