Branch per task
Give each task its own branch. Work stays separated and every change goes through review, which makes it easy to trace who did what and why.
Code review rules
Require at least one approval before merging. It catches mistakes early and spreads knowledge around the team so no single person holds all the context.