从GitHub分叉到Bitbucket

时间:2011-11-15 14:35:59

标签: git github bitbucket

我正在开发基于 CakePHP 的项目,该项目托管于 GitHub 我的项目正在 Bitbucket 上托管。他们都使用 git 。基本上我想在我的Bitbucket存储库中创建一个'fork'(我不知道我是否使用了正确的术语,因为我是 git 的新手)能够获得更新而无需下载所有CakePHP zip / tar并替换文件夹,然后提交并推送,但可能使用'merge'(?)。

6 个答案:

答案 0 :(得分:138)

今天不可能在不同的网站上发送“拉取请求”。我在Bitbucket问题跟踪器中添加了一项功能请求:#3288。如果你想追踪这个,我建议你把自己添加为追随者。

但是,您仍然可以将源从GitHub移动到Bitbucket而无需下载任何zip文件或tarball。你从GitHub克隆并推送到Bitbucket:

$ git clone https://github.com/cakephp/cakephp
$ cd cakephp
$ git push git@bitbucket.org:mg/cakephp.git master

我首先在Bitbucket中创建了mg/cakephp作为空的Git存储库。这样你可以将变换集从GitHub推送/拉到Bitbucket。

答案 1 :(得分:74)

下面的工作流程将github存储库添加为名为sync的新远程数据库,将bitbucket远程数据库添加为origin。它还添加了一个名为github的分支来跟踪github存储库和一个名为master的分支来跟踪bitbucket存储库。它假设你有一个名为“myrepository”的bitbucket存储库是空的。

设置遥控器

# setup local repo
mkdir myrepository
cd myrepository
git init

# add  bitbucket remote as "origin"
git remote add origin ssh://git@bitbucket.org/aleemb/myrepository.git

# add github remote as "sync"
git remote add sync https://github.com/aleemb/laravel.git

# verify remotes
git remote -v
# should show fetch/push for "origin" and "sync" remotes

设置分支

# first pull from github using the "sync" remote
git pull sync

# setup local "github" branch to track "sync" remote's "master" branch
git branch --track github sync/master

# switch to the new branch
git checkout github

# create new master branched out of github branch
git checkout -b master

# push local "master" branch to "origin" remote (bitbucket)
git push -u origin master

现在您应该让本地github分支跟踪github repo的master分支。并且您应该让本地master分支跟踪bitbucket repo(默认情况下为master分支)。

这样可以轻松地对github分支进行拉取,然后将这些更改合并到master分支(虽然优先于合并的rebase),然后您可以推送master分支(将它推到bitbucket)。

答案 2 :(得分:28)

如果你想让你的回购更新,请使用两个遥控器:Github(upstream)和Bitbucket(origin),如下所示:

# Clone original CakePHP source code from Github
git clone --mirror https://github.com/cakephp/cakephp
cd cakephp
# Rename remote from `origin` to `upstream`
git remote rename origin upstream
# Add your Bitbucket repo (this is where your code will be pushed)
git remote add origin https://bitbucket/your/repo.git
# Push everything to Bitbucket
git push --mirror origin

从Github获取CakePHP的更新:

git pull upstream master

将代码更改推送到Bitbucket:

git push origin master

答案 3 :(得分:15)

在BitBucket中创建新存储库时,单击右上角的按钮Import repository。输入在Github中单击Clone or download找到要存储的存储库时找到的https网址。

为您的存储库命名,配置您的隐私设置,然后就可以了!

答案 4 :(得分:1)

我注意到,自@Martin Geisler回答以来, Bitbucket已启用一项功能,可从github.com导入存储库

能够成功地从github.com导入私有仓库到bitbucket.org上的私有仓库

以下是步骤

  1. 单击“创建”按钮,然后选择存储库(“ +”>存储库)
  2. 现在,不要创建新的存储库,从弹出的模式的右上角选择一个导入存储库。
  3. 在用于导入存储库的新模式上填写github存储库的URL和身份验证凭据。
  4. 就是这样。一切都顺利地从github导入了bitbucket。

Note the import repository link on right top corner of the screenshot

答案 5 :(得分:0)

我猜你只是想用你的项目轻松下载存储库......而且你不会贡献cakePHP,对吗?

如果是这样,您只需要为您的仓库添加外部参考。

SVN:externals equivalent in GIT?

之后,即使你想为cakePHP做贡献,你也可以在原版回购中做到这一点。