In my field (physics modeling), I discover a bug in the output today that wasn't in the repository as of 6 months ago. When this happens, I will do a binary search on revisions:
- Run model from 3 months ago
- If bug is still in output, run the model from 4.5 months ago
- ... repeat until I find the commit that yields in bad output
When the bug was introduced in a monstrous commit, I have to sit with a fine-toothed comb to find the source of the problem. If the commit touched a small number of files, it's less painful to track down the line(s) of code that introduced the problem.
I would recommend breaking down your problem into a series of smaller tasks (ideally put each task in a bug tracker). Make a commit as you complete each task (and close that bug/feature in your bug tracker).