Bitbucket Cloud manages the relationship between the original repository and the fork for you. Forking is particularly useful if you want to do some major development work that you may or may not later merge back into the repository. Here is the basic workflow: Create a fork on Bitbucket.
You cannot fork a private repository to an organization using GitHub Free. For more information, see "GitHub's products." You can browse Explore to find projects and start contributing to open source repositories.
It's not possible to send "pull request" across different sites today. I've added a feature request for this in the Bitbucket issue tracker: #3288. I suggest you add yourself as a follower if you want to track this.
However, you can still move the source from GitHub to Bitbucket without having to download any zip files or tarballs. You make a clone from GitHub and push to Bitbucket:
$ git clone https://github.com/cakephp/cakephp
$ cd cakephp
$ git push [email protected]:mg/cakephp.git master
I created mg/cakephp
as an empty Git repository in Bitbucket first. That way you can push/pull changesets from GitHub to Bitbucket.
The workflow below adds the github repository as a a new remote called sync
and the bitbucket remote as origin
. It also adds a branch called github
to track the github repository and a branch called master
to track the bitbucket repository. It assumes you have a bitbucket repository called "myrepository" which is empty.
# setup local repo
mkdir myrepository
cd myrepository
git init
# add bitbucket remote as "origin"
git remote add origin ssh://[email protected]/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
Now you should have the local github
branch tracking the github repo's master
branch. And you should have the local master
branch tracking the bitbucket repo (master
branch by default).
This makes it easy to do a pull on the github
branch, then merge those changes onto the master
branch (rebase preferred over merge though) and then you can push the master
branch (will push it to bitbucket).
If you want to keep your repo up to date, use two remotes: Github (upstream
) and Bitbucket (origin
) like this:
# 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
To pull updates to CakePHP from Github:
git pull upstream master
To push your code changes to Bitbucket:
git push origin master
When creating a new repository in BitBucket, click the button Import repository
at the top right. Enter the https url found when clicking Clone or download
in Github for the repository you want to fork.
Give your repository a name, configure your privacy settings, and there you go!
I have noticed that since @Martin Geisler 's answer, Bitbucket has enabled a feature to import repositories from github.com
I was able to successfully import a private repo from github.com into a private repo on bitbucket.org
Here are the steps:
Note the import repository link on right top corner of the screenshot
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With