Я использую Git в Windows и хочу перенести исполняемый скрипт оболочки в git repo одним коммитом.
Обычно мне нужно сделать два шага ( git commit
).
$ vi install.sh
$ git add install.sh
$ git commit -am "add new file for installation" # first commit
[master f2e92da] add support for install.sh
1 files changed, 18 insertions(+), 3 deletions(-)
create mode 100644 install.sh
$ git update-index --chmod=+x install.sh
$ git commit -am "update file permission" # second commit
[master 317ba0c] update file permission
0 files changed
mode change 100644 => 100755 install.sh
Как я могу объединить эти два шага в один шаг? Конфигурация мерзавца? команда windows?
Напомним : два ответа хороши, git add --chmod=+x file
поддерживается в новой версии git
Ссылка: см. Вопрос в разделе Разрешения файла Git в Windows для второго коммита
git add --chmod=+x
это действительно возможно. Смотрите мой ответ ниже , спасибо Эдварду Томсону .git add --chmod=+x
версииОтветы:
Нет необходимости делать это в двух коммитах, вы можете добавить файл и пометить его как исполняемый:
Как вы заметили, после добавления, режим 0644 (т.е. не исполняемый). Тем не менее, мы можем пометить его как исполняемый перед фиксацией:
И теперь файл в режиме 0755 (исполняемый).
И теперь у нас есть один коммит с одним исполняемым файлом.
источник
git 2.9.x / 2.10 (3 квартал 2016 года) на самом деле позволит это (благодаря Эдварду Томсону ):
Это ускоряет весь процесс и работает, даже если
core.filemode
установлено значение false.Смотрите коммит 4e55ed3 (31 мая 2016 г.) Эдварда Томсона (
ethomson
) .Помогает: Йоханнес Шинделин (
dscho
) .(Объединено Junio C Hamano -
gitster
- в коммите c8b080a , 06 июля 2016 г.)источник
Если у файлов уже установлен флаг + x,
git update-index --chmod=+x
он ничего не делает и git считает, что нечего коммитить, даже если флаг не сохраняется в репозитории.Сначала вы должны удалить флаг, запустить команду git, а затем вернуть флаг:
тогда git увидит изменение и позволит вам зафиксировать изменение.
источник
Примечание: во-первых, вы должны убедиться, что
filemode
установленоfalse
в config git file, или использовать эту команду:и тогда вы можете установить разрешение 0777 с помощью этой команды:
источник
Я не имею
touch
иchmod
команды в моей cmd.exe иgit update-index --chmod=+x foo.sh
не работает для меня.Я наконец разрешаю это, установив
skip-worktree
бит:источник