idea: commit on every put and squash commits later as needed (either while syncing or when merging a feature branch). Another option would be to keep a local edit history beside git... which would be easy to build but make everything just more complex.