Individual packaging and deploying only modified functions


I couldn’t find any similar posts recently, so I thought I’d ask here.
I am looking for a way to upload/deploy only functions that have changed since last deployment, assuming they are packaged individually.
It seems that this is the case for layers, so layer zips are compared and skipped if determined to be the same.

Is there a way to accomplish the same for functions without sls deploy -f func?
From CI/CD perspective, parsing git changes and figuring out which functions have changed to run sls deploy -f func can get rather cumbersome for large or projects of complex structure.