Подтвердить что ты не робот

Как изменить режим файла на GitHub?

$ git add test-file

$ git commit -m 'first commit'
 create mode 100644 test-file

$ git push

$ git update-index --add --chmod=+x test-file

$ git commit -m 'change mode'
 mode change 100644 => 100755 test-file

$ git push

После этого, если вы перейдете в GitHub, он по-прежнему показывается как 100644 независимо от того, что.

4b9b3361

Ответ 1

MSYS не проблема. Даже если MSYS chmod не работает (это не так), Git имеет встроенный способ обойти эту проблему, то есть git update-index --chmod=+x. Пусть будет ясно, что git update-index работает только с индексом (промежуточная область), а не с локальным репозиторием (рабочий каталог).

Я убежден, что проблема связана с GitHub. В GitHub, если файл изначально нажат с режимом 100775, все хорошо. Если файл изначально, нажатый как 100644, он вызывает проблему. Попытки изменить режим файла будут успешными с помощью git add, преуспеть с помощью git commit, преуспеть с помощью git push и даже появиться в истории файлов GitHub, но не отразится на "блобе" /master "на GitHub.

Update

От: Петрос Амиридис (сотрудник GitHub)

Тема: Как изменить режим плавания на GitHub?

У меня есть хорошие новости. Наша удивительная команда только что подтвердила, что это ошибка кеширования на нашем конце. Наша команда развернула исправление.

Ответ 2

Я думаю, проблема в том, что MSYS, на котором основана реализация Windows git, не обрабатывает chmod правильно.

(EDIT: другой ответ говорит, что 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.