Sometimes when working on an old code base built by developers that came and went, one needs to perform what I call "code archeology": going back in time to understand why a feature was implemented the way it was.
Whether this is feasible at all depends largely on the care developers put in structuring their commits.