You are definitely correct. People who argue against squashing have not worked on 10+ years old actively developed repositories, or in big enough teams.
A commit is a change. A change has a ticket. A ticket is a small piece of work that does not result in 3k changed lines.
This ensures that the change rationale is fully documented and easily identifiable.
Nobody needs those "fixed typo" commits. Nor the "implemented function A" commits. What IS the change that you're doing? What functionality? That's the most comfortable commit granularity to debug imho.
A commit is a change. A change has a ticket. A ticket is a small piece of work that does not result in 3k changed lines.
This ensures that the change rationale is fully documented and easily identifiable.
Nobody needs those "fixed typo" commits. Nor the "implemented function A" commits. What IS the change that you're doing? What functionality? That's the most comfortable commit granularity to debug imho.