2
Personally (and I doubt this is the most efficient way) I make a back up of each site immediately before making any hacks.
I then copy and rename any files I'm going to hack (add old to the file name) and put them in a 'todays hacks' folder along with the properly named and 'hacked' files once they're done. I also try to comment files when I remember.
I can usually remember about two hacks back, more than that and I'm stuffed.
Of course, upgrading a site (different version numbers)causes major headaches where hacked core files are replaced. I usually redesign my sites (new theme etc) when a new release comes out, though I skipped everything between 2.0.13 and 2.3.0 as I couldn't bring myself to do all those hacks again.
2.3 has made me rebuild completely, and it's probably a good thing too. Keeps my users interested.
Never let a man who does not believe something can be done, talk to a man that is doing it.