Detectando alterações de permissão de arquivo em um repositório git

Quando você altera algumas permissões de arquivo, git detecta e marca como alterado. Agora, imagine que você deseja reverter algumas permissões de arquivo em um sistema git.

git diff --summary

da-te

mode change 100644 => 100755 Zend/Crypt/DiffieHellman.php

mas não informa se o conteúdo também mudou (AFAIK)

Você pode gerar os nomes dos arquivos que têm alterações (+++ / —) e também alterações de permissão:

git diff --summary |grep 'mode change ' | awk '{print $6}' | 
while read file_; do
diffed
=`git diff $file_|egrep '+++|---'|wc -l`;
if test 0 -ne $diffed; then
echo $file_
;
fi;
done

Você pode decidir submeter esses arquivos primeiro e então submeter / reverter o resto, já que não há mais alterações.