Git realiza un seguimiento del permiso de archivos y expone los cambios de permisos al crear parches usando git diff -p
. Entonces todo lo que necesitamos es:
- crear un parche inverso
- incluir solo los cambios de permiso
- aplicar el parche a nuestra copia de trabajo
Como una línea:
git diff -p -R --no-ext-diff --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never \
| git apply
también puede agregarlo como un alias a su configuración de git ...
git config --global --add alias.permission-reset '!git diff -p -R --no-ext-diff --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply'
... y puedes invocarlo a través de:
git permission-reset
Tenga en cuenta que si su shell es bash
, asegúrese de usar en '
lugar de "
comillas alrededor de !git
, de lo contrario se sustituye con el últimogit
comando que ejecutó.
Gracias a @Mixologic por señalar que simplemente usando -R
on git diff
, el engorroso sed
comando ya no es necesario.