GitHub is a wonderful service for hosting your Git repositories. In fact it is not only good at hosting repos, in my case it even hosts this blog :). However, we needed to migrate an existing repository from a self-hosted Git installation to GitHub. Here’s the instructions for doing the migration.
The first thing you need to do is to create an empty git repo at GitHub. You do not need to initialize it, just create it. Then clone your existing repo to you local computer:
git clone old-repo.host.com:/var/git/my_repo my_repo
cd my_repo
for branch in $(git branch -r | grep -v HEAD | cut -c 10-) ; do git checkout $branch ; git pull ; done
Add GitHub as a remote
git remote add github :avail-labs/avail.git
And push all code and tags to GitHub
git push --force --all github
git push --tags
Note that pushing a big repo to GitHub might take some time. It seems like GitHub is throttling the incoming requests slightly.
You will need to update your local Git configuration to point at GitHub instead of your old repo, when the repo has been pushed to GitHub. This command will do the trick
git remote set-url origin :gh-account/gh-repo.git
The URL can be copied from your GitHub repo’s web interface.
Happy coding!