It's easy to host a page on github and it's been done many times before, but i still managed to struggle on it.
Some months ago i've written myself a simple landing page which was hosted on adamverner.github.io. But that was not enough for me! Some years ago i registered domain averner.cz just so no one does it before me. It was it's time to shine.
As all tutorials say, you have to create file called CNAME in the root of the repository with the domain name inside.
echo 'averner.cz' > CNAME
git commit -a -m "add CNAME"
git push
After that is processed, the default domain get's redirected to the domain specified inside the CNAME.
Now the page disappeared, because the github.io address is redirected to the CNAME address.
I've registered my domain on wedos, they have great prices, but their administration is little confusing. When you go to DNS tab, there is overview of all registered domains, but nothing about DNS records.
For them to appear in the little menu on the left, you have to select the domain, which redirects you to another page. I personally find this a little confusing, but after manically searching through the whole administration you get used to it.

The only important record here are the A records, they point to github.io servers. Github then takes care of all requests and redirects them to proper pages.
Adding more subdomains is super-easy. Just create a repository and point a CNAME to it.
Go to Repository -> Settings -> GitHub Pages and select git branch to host the repository from.
Add a CNAME file with desired subdomain address e.g.: blog.averner.cz.
Now create CNAME record, that points the subdomain to your root domain.
Hosting on github is great, you don't have to deal with any deployment at all. There are ways to get dynamic content to your pages. More on that in future.