.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

Вопрос все еще там, хотя: зачем мне убегать ""? Я ожидал, что вся строка будет выполнена оболочкой.

Другие вопросы по тегам