I've forked a repository on GitHub and have a quite an extensive commit/pull/push history, which I need to keep.
The owner of the main repository has created some new branches. How can I clone these branches into my forked copy, without deleting the fork and cloning from scratch?
You'll want to add the other repository as a remote for your own one.
Got to where you've got your repository on your computer and open git Bash and do:
git remote add upstream <address of the repository you cloned from>
Then whenever you need to update your fork just do:
git fetch upstream
git rebase upstream/master
That will reapply whatever changes are on your current branch on top of any changes from the other repository. Note to make things easier I usually leave the master branch on my repository untouched and only work in branches. Then whenever I need to update I just rebase master and rebase my other branches on top of that.
Don't know about getting other branches for upstream though but this answer may be of help: How do I check out a remote Git branch?