Push commits for individual file. Get those merged when approved.
The mindset needs to change to think in small units.
Many software teams work in a DEV/Master (or DEV/Release) branch model. Small changes are made, checked, and pushed to Dev. Using a tool like Gerrit as a gatekeeper between Git and Dev helps here; Gerrit 'holds' a patch in its own branch, allowing review with comments in a UI. Amendments to the commit can be made, pushed to Gerrit, then merged (to Dev) when complete.
Get a nightly CI set up, review the output. When that is acceptable for a release, merge to Master, tag, build from Master and release.