Git хранит информацию о файлах в рабочем дереве в индексе. Часть данных, хранящихся в индексе, - это информация об устройстве и индексном дескрипторе каждого файла. Эта информация различается в зависимости от операционной системы, поскольку в разных операционных системах устройства нумеруются по-разному. Следовательно, совместное использование рабочего дерева между операционными системами, по крайней мере, приведет к тому, что все файлы потребуется перечитать при выполнении git status
или некоторых других команд после переключения операционных систем.
Кроме того, Linux сохраняет права на исполняемые файлы в файловой системе, а Windows - нет. Поскольку NTFS представляет собой файловую систему Windows, она не поддерживает разрешения для исполняемых файлов. Linux может только предполагать, что каждый файл является исполняемым, и поэтому ваши коммиты приводят к тому, что многие файлы, которые не могут быть успешно выполнены, помечаются как исполняемые. Вот почему кажется, что разрешения меняются.
В общем, NTFS не является хорошей файловой системой для Linux. Лучше использовать файловую систему UDF, которая будет работать как на Linux, так и на Windows, но может сохранять и использовать разрешения POSIX.
Как упоминалось ранее, у вас возникнут проблемы с совместным использованием рабочего дерево в операционных системах. UDF может сделать его функциональным и избежать текущих проблем с переключением разрешений, но это все еще не рекомендуемое решение, и вам следует его избегать.