Я прочитал несколько вопросов, касающихся прав доступа к файлам в 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
Я пытался изменить права доступа к файлам, но это не меняет результаты сравнения.
Я нашел решение о том, как изменить разрешения (также) на Windows здесь: http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html
Например, следующая команда добавляет пользователю разрешение на выполнение произвольного файла:
git update-index --chmod=+x <file>
От другого вопроса здесь: stackoverflow: Как мне изменить Git игнорировать режим файла (chmod)?
Try:
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.
hard
я пытался выполнить сброс. Это помогло мне.
Удобный однострочный для Git Bash:
find . -name '*.sh' | xargs git update-index --chmod=+x
Он помечает все .sh
файл как исполняемый файл.
После этого вам просто нужно git commit
.
Если вы используете Cygwin git (или Linux git тоже, я полагаю), есть хорошая вероятность, что ваш параметр core.filemode был установлен на уровне проекта в $projdir/.git/config. Я обнаружил, что мне нужно было сделать следующее, чтобы мой Cygwin git и мой Windows git хорошо сосуществовали в файловой системе Windows, без каких-либо несуществующих изменений в файловом режиме, постоянно появляющихся:
Это позволяет моему Cygwin git продолжать видеть изменения в файлеmode, которые обычно имеют значение, при указании Windows git игнорировать изменения файла, которые он видит, которые обычно являются ложными срабатываниями.
Я исправил это, изменив права доступа к файлам в Ubuntu, зафиксировал, нажал и все ОК. Кажется, он просто не работает с msysgit в Windows/NTFS.
Сначала проверьте разрешения.
git ls-files --stage
Затем измените разрешения
git update-index --chmod=+x 'scriptname.ext'
Теперь повторно проверьте разрешения.
git ls-files --stage
core.filemode
из Windows (где у меня установленcore.filemode
вfalse
), на самом деле имеют бит выполнения.