Back in 2014, I had the pleasure of learning what happens when you enable 2-factor auth in Github and forget to save your recovery codes. After that harrowing experience, I wrote this short story for fun. A friend recently went through the same thing, and so I thought I'd re-share this..
(Scroll down for tl;dr)
Once upon a time there lived a princess, a software princess. Everyday she would travel to the land of Github, where she would play with exciting, magical things like commits, branches, and pull requests with all the other software princesses and princes from other lands. However to get to the land of Github, she needed to cross two dangerous rivers - the River of Login and the River of Two Factor Authentication (dun dun dun). Although the two rivers had strong, safe bridges the software princess used to cross, there were big scary (internet) trolls that lived under the bridge. One day after crossing the River of Login without any trouble from the trolls, the software princess was stopped at the River of Two Factor Authentication. "I won't let you pass!" thundered the troll. "But I have my authentication code!" protested the software princess. She tried again and again, but the troll refused. She walked back to her castle, defeated. But as she plopped into her bed, she thought of something. She eagerly dug through her treasure chest, grabbed a file, and dashed out the door. She ran all the way to the River of Two Factor Authentication, and triumphantly yelled "Come out, Mr. Troll! I have my recovery codes! Now you will let me cross the bridge!" And sure enough, the troll let her pass, and the software princess made it to the land of Github. The end.
tl;dr - 1) Save your Github recovery codes. 2) Software princesses are awesome.