Обновление и фиксация только прав доступа к файлу с помощью контроля версий git

Просто повернулsome.sh файл в исполняемый файл (chmod 755 ...), разрешения были обновлены, но не содержание. Есть ли способcommit файл в git, так что исполняемый бит будет восстановлен / установлен наclone / checkout / pull ?

Update: как я могу отследить, что новые разрешения были отправленыgithub?

Ответы на вопрос(3)

@fooMonster статья работала на меня

# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe    script.

Как видите, файл имеет разрешение 644 (без учета 100). Мы хотели бы изменить его на 755:

# git update-index --chmod=+x script.

зафиксировать изменения

# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.
 24 нояб. 2015 г., 10:45
Это работает только для & quot; исполняемого файла & quot; флаг
 21 сент. 2018 г., 13:50
Следует отметить, что вам действительно нужно использовать «-x / + x». Вы не можете устанавливать какие-либо другие разрешения или битовую маску.
 24 дек. 2018 г., 12:39
обратите внимание, используяgit commit -a ничего для меня не сделал, однако установил сообщение в командной строке. Немного причуды

Режим верный, права доступа к файлам были изменены, но git говорит, что делать нечего.

git init
git add dir/file
chmod 440 dir/file
git commit -a

Кажется, проблема в том, что git распознает только определенные изменения прав доступа.

 26 июн. 2013 г., 21:41
Правильный -git на самом деле только отслеживает, является ли файл исполняемым или нет, а не полный набор разрешений * nix. Так что вам придется переключать файл между исполняемым файлом / не для того, чтобы думать, что вы изменили что-то стоящее ...
 27 июн. 2013 г., 13:49
Я не смог найти документацию, которая бы содержала ясность: какой триггер пост-действия я могу использовать, возможно, для соответствующей настройки разрешений?
 27 июн. 2013 г., 16:09
Ну, естьpost-checkout зацепитьgit, который охватывал бы некоторые случаи, но я не уверен, охватит ли это все возможные вещи, которые обновляют файлы в вашем рабочем дереве. Возможно, вам лучше иметь в своем репозитории дополнительный сценарий оболочки, который устанавливает все соответствующим образом. Кроме того, есть несколько проектов, которые увеличиваютgit хранить метаданные, но я никогда не пробовал ни одного из них ...
 25 апр. 2015 г., 14:32
@ twalberg, это должен быть ответ сам по себе! Это единственная информация, к которой я пришел.
 20 июн. 2016 г., 11:24
Я изменил права доступа к файлу на 777 и сделалgit update-index --refresh, но разница показываетold mode 100644 new mode 100755, Он не обновил все разрешения
Решение Вопроса

Если вы не видите изменений при изменении прав доступа, возможно, у вас есть конфигурация в git, которая игнорирует режим файлов.

Посмотрите на ваш проект, в.git папка дляconfig файл, и вы должны увидеть что-то вроде этого:

[core]
    filemode = false

Вы можете изменить его наtrue в вашем любимом текстовом редакторе или запустите:

git config core.filemode true

Тогда вы сможете нормально фиксировать ваши файлы. Это только передаст изменения разрешения.

 09 мая 2012 г., 15:38
Вы можете увидеть это при просмотре файла (например, наRails gitignore file, вы найдете 100644 в качестве разрешения файла)
 11 июл. 2017 г., 10:22
Этот ответ неверен! Git отслеживает только исполняемый файл или нет. Он не отслеживает другие права доступа к файлам, например, для записи или чтения. Читатьstackoverflow.com/a/11231682/2311074 для большего.
 17 мая 2013 г., 21:08
Изменение прав доступа в Windows с помощью git (собственно изменение прав доступа к файлам и их фиксация):blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html
 BreakPhreak09 мая 2012 г., 15:01
благодарю вас! как я могу отследить, что изменения разрешения были представленыgithub?

Ваш ответ на вопрос