I have created a website and placed it on github in the repo with USRNAME.github.com. First when I went to that website, my website displayed correctly. Then I bought a domain, lets say example.com. I placed a CNAME file in the repo, so now USRNAME.github.com forwards to example.com.
I understand that I have to point my domain at the github server in order to allow my website to be displayed at example.com, but I'm not sure how. I created the site through gandi.net. I tried editing the zone file to have a CNAME entry with USRNAME.github.com but that didn't work. I also tried to edit the DNS server name but no entry I placed in there seemed valid.
Any help would be greatly appreciated. Thanks.
As you understood, the CNAME file on the github side must be completed by a custom DNS setting on the registrar side, in order to complete the matching between your domain name (example.com) and the subdomain on github. The CNAME file is required by github to route incoming request on its own DNS Zone (192.30.252.153) to the proper user subdomain.
Therefore, the missing step is having your domain actually pointing to github's DNS Zone. On the registrar side (gandi.net), you achieve that by editing the DNS Zone file attached to your domain. This zone file describes the hierarchical domain name structure of the DNS Zone that your very domain pertains to. What you are about to do is changing the mapping between some parts of your DNS Zone and IPs. When you want to point a top-level-based domain name to an arbitrary IP v4 (here, github's DNS Zone located at 192.30.252.153), you are interested in redefining an A Record (A simply standing for "Address") in your own zone.
A specific answer for gandi.net:
- head to https://www.gandi.net/admin/domain
- click on the domain you want to use
- at the bottom of its admin page, under "Zone files", click on "Edit the zone"
Here you can see the list of settings for your zone file. A new feature of Gandi is that of "versions": different versions of the zone file can be created and only one is active at a time.
To tweak the zone file for github, first click on "Create a new version". It will simply create a copy of the currently activated version.
The preferred way for wiring is to add a new CNAME mapping, from *.{yourdomain.tld} to {youraccount}.github.io. For instance, my kaibun.net domain must be the facade for chikamichi.github.io, so I added a CNAME mapping *.kaibun.net to chikamichi.github.io. (the final dot is mandatory in gandi's config).
You may want to edit the * and @ record types settings as well, for instance if you just want the whole DNS zone to behave like a "proxy" (meaning it will "redirect" to your github subdomain no matter what). This is not required though, so this step is optional. I assume you are still in Normal edit mode. Click on the Pen icon on the right side of the * line. Keep all fields untouched but the "Value" one: paste the github URI in (the github documentation recommends using 204.232.175.78; you may have found different values on the internet, though: don't use them). Validate, then proceed the same for the @ line.
Do not forget to click on "Activate this version" when you're ready. Check that the "Active version number" is correct. The changes will take some time to propagate.
Detailled examples and procedure: http://wiki.gandi.net/dokuwiki/en/dns/zone/a-record
You need to setup an A record which points to the github server. You said you used gandi.net, so basically you would change your DNS settings for the top level domain by adding(or modifying) an A record to point to github.
If you want, you can add a subdomain (like www.) by adding a CNAME in your DNS to point to the top level domain or an A record which, again, points to github.