Обновление и фиксация только прав доступа к файлу с помощью контроля версий git
Просто превратил файл some.sh
в исполняемый файл (chmod 755 ...
), разрешения были обновлены, но не содержимое. Есть ли способ зафиксировать файл в git, чтобы исполняемый бит был восстановлен/установлен на clone/checkout/pull?
Обновление:, как я могу отслеживать, что новые разрешения были отправлены на github
?
Ответы
Ответ 1
По умолчанию git обновит права доступа к исполняемому файлу, если вы их измените. Он не будет изменять или отслеживать любые другие разрешения.
Если вы не видите никаких изменений при изменении прав на выполнение, у вас, вероятно, есть конфигурация в git, которая игнорирует режим файла.
Посмотрите в свой проект, в папке .git
для файла config
и вы должны увидеть что-то вроде этого:
[core]
filemode = false
Вы можете изменить его на true
в вашем любимом текстовом редакторе или запустить:
git config core.filemode true
Тогда вы сможете нормально фиксировать ваши файлы. Это только передаст изменения разрешения.
Ответ 2
Работа @fooMonster для меня работала
# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe script.sh
Как вы видите, файл имеет разрешение 644 (игнорируя 100). Мы хотели бы изменить его на 755:
# git update-index --chmod=+x script.sh
зафиксировать изменения
# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh
Ответ 3
Не работает для меня.
Режим true, файл perms изменен, но git говорит, что нет работы.
git init
git add dir/file
chmod 440 dir/file
git commit -a
Проблема заключается в том, что git распознает только определенные изменения разрешений.