I'd like to provide a team of some non-technical Windows (=direct mode) users with the following git-shell scripts to make collaboration safer than with plain "sync": 1) **update-changes-from-others.sh** -- Like sync, but don't commit any local changes. Merge them like sync, don't discard. 2) **sync-all-but-deletes.sh** -- Like sync but don't commit any deletions (-> renames may become additions). 3) **discard-all-my-changes.sh** -- Forcibly discard all local changes, then checkout and get latest master head. Any pointers on how to approach implementing these safely?