Возможно, на вашем внешнем жестком диске была другая файловая система, которая не учитывала исходные права доступа к файлу. Я бы просто исправил их вручную, прежде чем совершать.
Например, FAT32, который обычно используется на флэш-накопителях USB, не поддерживает разрешения на выполнение. Когда вы копируете файл из файловой системы FAT32 в обычную Unix-подобную файловую систему, он обычно устанавливает разрешение на выполнение для всех файлов, поскольку это менее опасно, чем отключение его для всех файлов.
Если вы хотите сохранить такую информацию, не копируйте файлы непосредственно на диск; вместо этого создайте файл tar (необязательно сжатый), а затем распакуйте его на другом конце. Формат tar отслеживает биты разрешений Unix.
Обратите внимание, что сам git не отслеживает больше, чем исполняемый и неисполняемый файл. Если изменения режима - единственная разница, и вы не хотите переписывать все, вы можете превратить вывод git diff
в сценарий, который выполняет chmod -x
для всех затронутых файлов.