What are some proven methods for keeping track of research and programming in a lab notebook format? Are there any proven methods for keeping a computer science lab notebook? What sort of stuff goes into a CS lab notebook, and what notation is used? Are there any reliable ELN methods, preferably integrating with Git?

I want to keep a lab notebook that helps me keep a running narrative of my research as well as my programming, in the same way you would keep a natural science lab notebook. It would be handy to be able to write down what I'm doing as I'm programming, then when a bug mysteriously appears in the software, I can see the last time the software was working, see where the bug started, then read the running narrative in between to help figure out what is causing it.
I don't do CS specifically, but I do research in computational/mathematical Epidemiology, which similarly lacks a clear format for a "lab notebook" and where the electronic tools designed for something like chemistry and biology doesn't necessarily suit.

Honestly, I've tried a number of systems. A private Wiki, a variety of other electronic systems, etc. And when it came down to it, I went back to a traditional paper notebook.

I've ended up with a bound paper notebook where I keep notes about experiments and simulations being run, thoughts on direction for the project, and the occasional printout of results taped inside. This has, for me, worked far better than electronic systems.