从 GitHub 到 Bitbucket

我正在做一个基于 CakePHP的项目,这个项目是在 GitHub上主持的。我的项目被托管在 比特巴克特上。他们都使用 饭桶。基本上,我想在我的 Bitbucket 存储库中创建一个 CakePHP 的“ fork”(我不知道我使用的术语是否正确,因为我对 饭桶是新手) ,以便能够获得更新,而不需要下载所有的 CakePHP zip/tar 并替换文件夹,然后提交和推送,但也许可以使用一个“ merge”(?).

73376 次浏览

现在不可能在不同的网站上发送“拉请求”。我已经在 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 创建了一个空的 Git 仓库 mg/cakephp。这样您就可以将变更集从 GitHub 推送到 Bitbucket。

如果你想让你的回购更新,使用两个遥控器: 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

下面的工作流将 github 存储库添加为一个名为 sync的新远程,将 bitbucket 远程添加为 origin。它还添加了一个名为 github的分支来跟踪 github 存储库,以及一个名为 master的分支来跟踪 bitbucket 存储库。它假设您有一个位桶存储库,名为“ myitory”,该存储库是空的。

安装遥控器

# 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 回购(默认情况下是 master分支)。

这使得在 github分支上做一个提取操作变得很容易,然后将这些更改合并到 master分支上(尽管与合并相比,更喜欢重新定位) ,然后您可以推送 master分支(将其推送到 bitbucket)。

我猜你只是想轻松地下载你的项目库... 你不会贡献 CakePHP,对不对?

如果是这样,您只需要添加一个外部引用到您的回购。

GIT 中的外部等价物?

稍后,即使您想为 cakePHP 做贡献,也可以在最初的 repo 中完成。

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

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

我注意到,自从@Martin Geisler 的答案 Bitbucket 启用了从 github.com 导入存储库的功能

成功地将 github.com 上的一个私人回购协议导入 bitbucket. org 上的一个私人回购协议

以下是 步骤:

  1. 单击 Create 按钮并选择 Repository (’+’> Repository)
  2. 现在,不再创建新的存储库 从弹出的模式的右上角选择一个导入存储库。
  3. 在导入存储库的新模式中填写 github repo 的 URL 和身份验证凭据。
  4. 就是这样,一切都顺利地从 Github 进口到 bitbucket。

请注意屏幕截图右上角的导入存储库链接