I won't use any version control system that doesn't let me stage individual changes in files. Staging entire files at once is just wrong.
Besides that, there are powerful "split" feature to split a commit into smaller commits or move changes between commits.