我想从GitHub克隆一个开源项目,但我想使用Bitbucket作为远程存储库主机,因为它的私有仓库是免费的。如何从GitHub复制项目,但使用Bitbucket作为远程存储库
我不打算fork/pull请求,但是当原始项目得到更新时,我想将更新拉到我的本地存储库并合并。
我想最终我需要两个远程存储库。 (来源和上游?)
什么是建立这样的环境的正确/最安全的方法?
我想从GitHub克隆一个开源项目,但我想使用Bitbucket作为远程存储库主机,因为它的私有仓库是免费的。如何从GitHub复制项目,但使用Bitbucket作为远程存储库
我不打算fork/pull请求,但是当原始项目得到更新时,我想将更新拉到我的本地存储库并合并。
我想最终我需要两个远程存储库。 (来源和上游?)
什么是建立这样的环境的正确/最安全的方法?
我刚刚在GitHub上测试了一个项目:google-calendar-backup。
首先,我登录到我的Bitbucket帐户并创建了一个名为google-calendar-backup
的私人Git回购协议。
然后,我做了以下步骤:
(注:我在Windows上,这样的路径可能是您的机器上的不同)
克隆原来从GitHub
回购git clone https://github.com/christianspecht/google-calendar-backup C:\LocalDir
这将在本地repo中创建一个指向GitHub的远程“origin”。
既然你想主要使用Bitbucket,Bitbucket应该是“主”远程origin
,所以我们将重命名现有的。
cd c:\localdir
git remote rename origin upstream
转到本地目录,并添加到位桶回购作为第二遥控:
git remote add origin https://bitbucket.org/christianspecht/google-calendar-backup
(可选)同时显示遥控器:
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)
按各分公司到位桶一旦
git push -u --all origin
结果:
Username for 'https://bitbucket.org': christianspecht
Password for 'https://[email protected]':
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.
(感谢larsks为-u
- 我不知道这一点,我还在学习的Git自己)
就是这样。现在您可以进行更改并推送至origin
(Bitbucket)。
偶尔,您需要从upstream
(GitHub)取得原始项目的新更改。
谢谢,它工作完美。我也需要以同样的方式设置另一台计算机。但是因为我已经将代码推送到Bitbucket存储库,所以我想在Github上克隆这个代码而不是原始代码,然后在Github库中添加一个上游分支。我明天再试。 –
我想你已经描述了一个合适的解决方案。你需要两个遥控器,一个指向gitub,一个指向bitbucket。名称'origin'和'upstream'对于这种设置非常典型。首次推送分支时,请确保使用'-u'设置正确的远程追踪分支。 – larsks
谢谢,很高兴知道我正处在一个正确的方向。我只知道git的基本命令,从来没有在这个级别尝试过任何东西。我已阅读过许多博客文章和文章,但找不到完全相同的情况。 –