Разрешения для файлов Git в Windows - PullRequest
148 голосов
/ 25 июня 2011

Я прочитал несколько вопросов, касающихся прав доступа к файлам в Git, и я все еще немного сбит с толку. У меня есть репозиторий на GitHub, раздвоенный от другого. Пост слияния, они должны быть идентичны. Тем не менее:

$ git diff --summary origin/epsilon master/epsilon
 mode change 100644 => 100755 ants/dist/sample_bots/csharp/compile.sh
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/MyBot.coffee
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/ants.coffee
 mode change 100644 => 100755 ants/util/block_test.sh
 mode change 100644 => 100755 manager/mass_skill_update.py
 mode change 100644 => 100755 worker/jailguard.py
 mode change 100644 => 100755 worker/release_stale_jails.py
 mode change 100644 => 100755 worker/start_worker.sh

Я пытался изменить права доступа к файлам, но это не меняет результаты сравнения.

Ответы [ 6 ]

287 голосов
/ 28 ноября 2012

Я нашел решение о том, как изменить разрешения (также) для Windows, здесь: http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html

Например, следующая команда добавляет пользователю разрешение на выполнение в произвольный файл:

git update-index --chmod=+x <file>
92 голосов
/ 25 июня 2011

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

Попытка:

git config core.filemode false

С git-config (1) :

   core.fileMode
       If false, the executable bit differences between the index and the
       working copy are ignored; useful on broken filesystems like FAT.
       See git-update-index(1). True by default.
28 голосов
/ 22 сентября 2015

Удобный однострочный текст для Git Bash:

find . -name '*.sh' | xargs git update-index --chmod=+x

Он пометит весь .sh файл как исполняемый.После этого вам просто нужно git commit.

9 голосов
/ 28 декабря 2016

Если вы используете Cygwin git (или Linux git тоже, я полагаю), есть большая вероятность, что ваш параметр core.filemode был установлен на уровне проекта в $ projdir / .git / config. Я обнаружил, что мне нужно было сделать следующее, чтобы мой Git Cygwin и мой Git Windows прекрасно сосуществовали в файловой системе Windows без несуществующих изменений файлового режима:

  • удалить настройку строки core.filemode в $ projdir / .git / config
  • в Windows git, запустите "git config --global core.filemode false"

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

5 голосов
/ 28 июня 2011

Я исправил это, изменив права доступа к файлам в Ubuntu, commit, push и все ОК. Кажется, он просто не будет работать с msysgit в Windows / NTFS.

1 голос
/ 10 января 2019

Сначала проверьте разрешения.

git ls-files --stage

Затем измените разрешения

git update-index --chmod=+x 'scriptname.ext'

Теперь повторно проверьте разрешения.

git ls-files -Этап

=============================================

, если вы используете ПК с Windows, но развертываете на Linux-машине.Выполните приведенную ниже команду в первую очередь, чтобы сделать ее совместимой для запуска на Linux-машине

dos2unix scriptname.ext scriptname.ext

...