• Host on GitHub
  • Store bundle in cloud storage

Creating bundle to backup

git clone --mirror URL
cd REPONAME.git
git bundle create ../ORGANIZATION-REPONAME.bundle --all` 

Restoring

git clone ORGANIZATION-REPONAME.bundle
cd ORGANIZATION-REPONAME
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
# Create new repo on Git server and update origin of local repo
git remote set-url origin git@github.com/XXX.git
# Push all branches and tags to the new remote origin
git push --all
git push --tags

Source