git add hook / getting git para ignorar los modos de files nuevos

Estoy trabajando con un repository git tanto en windows como en linux / mac. Cuando creo files nuevos en Windows o los edito en algunos editores de text, el modo de file cambia a 775. Puedo hacer que git ignore los cambios en el modo de file con

git config core.filemode false 

pero también quiero que la mayoría de los files nuevos tengan el modo 664 (no el 775). Lo mejor que he encontrado hasta ahora es el gancho precompromiso

 git diff --cached --name-only | egrep -v '\.(bat|py|sh|exe)' | xargs -d"\n" chmod 664 git diff --cached --name-only | egrep -v '\.(bat|py|sh|exe)' | xargs -d"\n" git add 

pero esto hace lo incorrecto si agregué un nuevo file, luego lo edité nuevamente antes de comprometerlo y luego lo realicé sin agregarlo. ¿Hay una forma mejor de hacer esto, o algo así como un gancho pre-agregado o post-agregado?

Editar: git diff --cached --name-only también me da files que han sido eliminados, así que lo que realmente quiero es algo así como git diff --cached --name-only --diff-filter=ACMRTUXB

En lugar de usar chmod y readding, puede usar git update-index --chmod=-x <files> para modificar el índice directamente.

Eche un vistazo a los attributes de git. Puedes manejarlo allí. Manchar / limpiar puede ser una forma de manejarlo.