Git отслеживает разрешение файлов и выставляет изменения разрешений при создании патчей с использованием git diff -p
. Итак, все, что нам нужно, это:
- создать обратный патч
- включает только изменения прав доступа
- примените патч к нашей рабочей копии
как однострочный:
git diff -p -R --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never \
| git apply
вы также можете добавить его в качестве псевдонима в ваш git config ...
git config --global --add alias.permission-reset '!git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply'
... и вы можете вызвать его через:
git permission-reset
Обратите внимание, что если вы используете bash
, то обязательно используйте '
вместо "
кавычек вокруг !git
, в противном случае он заменяется последней командой git
, которую вы выполнили.
Спасибо @Mixologic за указание, что при простом использовании -R
на git diff
громоздкая команда sed
больше не требуется.