.gitconfig [псевдоним] не распознает строки
Я пытаюсь создать псевдоним для моего GIT, который выглядит примерно так:
[alias]
send = !git add . && git commit -m "AUTOCOMMIT: $(date)" && git push
Этот псевдоним предназначен для незначительных изменений, которые не нуждаются в каких-либо сообщениях. Проблема в том, что всякий раз, когда я бегу git send
он возвращает следующее:
$ git send
error: pathspec 'Fri' did not match any file(s) known to git.
error: pathspec 'Aug' did not match any file(s) known to git.
error: pathspec '22' did not match any file(s) known to git.
error: pathspec '11:31:18' did not match any file(s) known to git.
error: pathspec 'PDT' did not match any file(s) known to git.
error: pathspec '2014' did not match any file(s) known to git.
Если я запускаю команду вручную, ошибки нет:
$ git add .
$ git commit -m "AUTOCOMMIT: $(date)"
[master] AUTOCOMMIT: Fri Aug 22 11:37:17 PDT 2014
1 file changed, 1 deletion(-)
$ git push
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 368 bytes | 0 bytes/s, done.
Total 4 (delta 2), reused 0 (delta 0)
To <gitRepo>.git
master -> master
Есть идеи?
2 ответа
Согласно git-config(1)
, в ФАЙЛЕ КОНФИГУРАЦИИ: Синтаксис:
Строковые значения могут быть полностью или частично заключены в двойные кавычки. Вам необходимо заключить значения переменных в двойные кавычки, если вы хотите сохранить начальные или конечные пробелы или если значение переменной содержит символы комментария (т. Е. Содержит
#
или же;
). Двойная цитата"
и обратный слеш\
символы в значениях переменных должны быть экранированы: использовать\"
за"
а также\\
за\
,
Вам не обязательно добавлять второй набор цитат, поэтому:
[alias]
send = !git add . && git commit -m \"AUTOCOMMIT: $(date)\" && git push
Кроме того, если вы сохраните свои псевдонимы с помощью git config
, вы можете избежать необходимости экранирования вручную:
$ git config --global \
alias.send '!git add . && git commit -m "AUTOCOMMIT: $(date)" && git push'
Решил это, изменив псевдоним:
[alias]
send = !git add . && git commit -m "\"AUTOCOMMIT: $(date)\"" && git push
Вопрос все еще там, хотя: зачем мне убегать ""
? Я ожидал, что вся строка будет выполнена оболочкой.