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