Skip to content

Instantly share code, notes, and snippets.

@sangeeths
Created March 10, 2014 15:24
Show Gist options
  • Save sangeeths/9467061 to your computer and use it in GitHub Desktop.
Save sangeeths/9467061 to your computer and use it in GitHub Desktop.
Forking a Github repo to Bitbucket
Go to Bitbucket and create a new repository (its better to have an empty repo)
git clone git@bitbucket.org:abc/myforkedrepo.git
cd myforkedrepo
Now add Github repo as a new remote in Bitbucket called "sync"
git remote add sync git@github.com:def/originalrepo.git
Verify what are the remotes currently being setup for "myforkedrepo". This following command should show "fetch" and "push" for two remotes i.e. "origin" and "sync"
git remote -v
Now do a pull from the "master" branch in the "sync" remote
git pull sync master
Setup a local branch called "github"track the "sync" remote's "master" branch
git branch --set-upstream github sync/master
Now push the local "master" branch to the "origin" remote in Bitbucket.
git push -u origin master
Courtesy: http://stackoverflow.com/questions/8137997/forking-from-github-to-bitbucket
@jtcmedia
Copy link

I have an error that says fatal: refusing to merge unrelated histories. Any help would be appreciated !

When you create the repository in Bitbucket, ensure you select No README or else it will create an initial commit.

Copy link

ghost commented Dec 30, 2018

Well explained how-to fork a github repo in a bitbucket server (initial status).
But what should i do, wenn the original repo changes? Should i merge the updated github-branch to master-branch and than push it?
What are the steps to:

  1. pull changes from forked repo
  2. merge it to my master branch
  3. push changes to my bitbucket-repo

@harshachandra
Copy link

harshachandra commented Aug 5, 2019

@Ralcon: One possible way I can think off is; you maintain two branches in your destination (e.g. Bitbucket) repo. One branch which you wish to own (let's call it "master") and modify(maybe) and another which is replica of source (e.g. github.com) and let's call it "source". Now you need to keep updating your "source" and there shouldn't be any merge conflicts as every-time it is syncing to the latest or source. Later you can decide to merge "source" to "master" as and when you need.

@adilsammar
Copy link

--set-upstream is no more supported use --track instead

Use: git branch --track github sync/master instead of git branch --set-upstream github sync/master

@abhaynpai
Copy link

use git pull sync master --allow-unrelated-histories

@scheung38
Copy link

Our local branch commit messages as it is only accepting certain format i.e []: message or else git push will fail,
as the upstream would have totally different commit message formats.

@pavelkomarov
Copy link

pavelkomarov commented Jan 28, 2022

% git pull sync master

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

If you run in to this, try connecting to the repo you want to fork with https instead of ssh. I hadn't set up keys on my system for git with ssh, so it complained.

@zobayer1
Copy link

zobayer1 commented Apr 27, 2023

If your main branch loses track of your origin (when it's not master, e.g. main), you can set it back with:

git branch --set-upstream-to=origin/main

Make sure that you were in the target branch, in the above example: main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment