Как заставить Git игнорировать изменения режима файла (chmod)?

Попробуйте json_decode :

$array = json_decode('{"id":1,"name":"foo","email":"foo@test.com"}', true);
//$array['id'] == 1
//$array['name'] == "foo"
//$array['email'] == "foo@test.com"

2130
задан VonC 11 June 2014 в 04:55
поделиться

3 ответа

Попробуйте:

git config core.fileMode false

Из git-config (1) :

 core.fileMode
 Сообщает Git, если исполняемый бит файлов в рабочем дереве
 заслуживает уважения.

 Некоторые файловые системы теряют исполняемый бит, когда файл
 помеченный как исполняемый файл извлечен или извлекает
неисполняемый файл с исполняемым битом. git-clone (1)
 или git-init (1) исследует файловую систему, чтобы узнать, обрабатывает ли она 
 исполняемый бит правильно, и эта переменная автоматически
 установить по мере необходимости.

 Однако репозиторий может находиться в файловой системе, которая обрабатывает
 режим файла правильно, и эта переменная имеет значение true, когда
 создан, но позже может быть доступен из другого
 среда, которая теряет файловый режим (например, экспорт ext4
 через CIFS mount, посетив созданный Cygwin репозиторий с помощью Git
для Windows или Eclipse). В таком случае может потребоваться
чтобы установить для этой переменной значение false. См. Git-update-index (1).

 По умолчанию установлено значение true (если core.filemode не указан
 в файле конфигурации).

Флаг -c можно использовать для установки этой опции для одноразовых команд:

git -c core.fileMode=false diff

А флаг - global сделает его поведением по умолчанию для зарегистрированный пользователь.

git config --global core.fileMode false

Изменения глобальной настройки не будут применены к существующим репозиториям. Кроме того, git clone и git init явно устанавливают для core.fileMode значение true в конфигурации репозитория, как описано в Git global core.fileMode ложно переопределяется локально на клоне

Предупреждение

core.fileMode не является наилучшей практикой и должен использоваться с осторожностью. Этот параметр охватывает только исполняемый бит режима и никогда не касается битов чтения / записи. Во многих случаях вы думаете, что вам нужен этот параметр, потому что вы сделали что-то вроде chmod -R 777 , сделав все ваши файлы исполняемыми. Но в большинстве проектов большинство файлов не нужны и не должны быть исполняемыми по соображениям безопасности .

Правильный способ решить такую ​​ситуацию - обрабатывать права доступа к папкам и файлам по отдельности, например:

find . -type d -exec chmod a+rwx {} \; # Make folders traversable and read/write
find . -type f -exec chmod a+rw {} \;  # Make files read/write

Если ты сделаешь это, ты »

3622
ответ дан 22 November 2019 в 19:59
поделиться

Добавление к ответа Грега Хьюгилла (использования переменной конфигурации core.fileMode ):

Вы можете использовать - chmod = (- | +) x опция git update-index (низкоуровневая версия «git add») для изменения разрешений на выполнение в индексе, откуда он будет взят, если вы используете «git commit» (а не «git commit -a»).

51
ответ дан 22 November 2019 в 19:59
поделиться

Изменение режима отмена в рабочем дереве:

git diff --summary | grep --color 'mode change 100755 => 100644' | cut -d' ' -f7- | xargs -d'\n' chmod +x
git diff --summary | grep --color 'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -d'\n' chmod -x

или в MingW-Git

git diff --summary | grep  'mode change 100755 => 100644' | cut -d' ' -f7- | xargs -e'\n' chmod +x
git diff --summary | grep  'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -e'\n' chmod -x
268
ответ дан 22 November 2019 в 19:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: