Мне кажется, проблема в том, что MSYS , на котором основана реализация git для Windows, не обрабатывает chmod
должным образом.
(РЕДАКТИРОВАТЬ: другой ответ говорит, что MSYS не проблема, что, безусловно, кажется правдоподобным.)
Я предполагаю, что команда
git update-index --add --chmod=+x test-file
работает путем обновления метаданных в локальном репозитории (который должен работать) и изменения разрешений для файла (который не работает), переводя локальный репозиторий в несогласованное состояние.
Вы должны быть в состоянии отказаться от этого, отменив update-index
:
git update-index --add --chmod=-x test-file
git commit -m 'change mode back'
git push
чтобы вернуть хранилище в согласованное состояние, а затем внести изменения в копию хранилища, отличную от Windows. Если у вас нет доступа к Linux или другой Unix-подобной системе, Cygwin включает git
(не по умолчанию, но вы можете установить его через setup.exe
) и предоставляет среду, в которой chmod
на самом деле работает. Оболочкой по умолчанию для Cygwin является bash, поэтому среда должна быть знакома, если вы использовали git bash.
Файл все равно не будет казаться исполняемым, если вы посмотрите на него из оболочки git bash, но он должен отображаться как 100755
в веб-интерфейсе GitHub.