I have a directory ~/Documents/TODO/ inside which I have single file for each feature I'm working on. These files simply contain a list of items marked as completed or not completed using a tick/cross. It's simple, non-proprietary and is easy to put under source control.
For long-term note taking I use Evernote. This is for things like obscure git commands and 'how-to's.