Git параметры добавления псевдонимов для завершения
Я использую Git Bash v1.8.1, с несколькими псевдонимами (для тестирования):
[alias]
ekko = !echo $1 && echo $1
ekko2 = !sh -c 'echo $1 && echo $1'
Но когда я запускаю их, я вижу:
> git ekko master
master
master master
и
> git ekko2 master
(blank line)
(blank line)
Мое предназначение:
> git ekko master
master
master
Я новичок в псевдонимах - я ищу способ убедиться, что мои аргументы полностью поглощены, а не добавлены к концу псевдонима. Некоторые слежки показывают, что это поведение изменилось где-то около Git v1.7.x, и я еще не определил, как это сделать:
Git Псевдоним - несколько команд и параметров
Ответы
Ответ 1
Ваш псевдоним ekko2
действительно близок... Что вам действительно нужно, так это:
[alias]
ekko2 = !sh -c 'echo $1 && echo $1' -
Git псевдонимы, которые выполняют команды оболочки, заменяют переменные $n
, но также добавляют любые аргументы, которые вы передаете им в конце команды. Поэтому в вашем первом примере git ekko master
эквивалентен echo master && echo master master
, что объясняет его вывод.
Второй пример ближе, но вы передаете "master" команде sh
, которая просто игнорирует дополнительный аргумент. Добавив -
в конец псевдонима, вы сообщаете sh
, что следующие аргументы предназначены для script sh
, а не для sh
.
Ответ 2
ekko2
в конце отсутствует одиночная тире:
[alias]
ekko2 = !sh -c 'echo $1 && echo $1' -
См. Git Wiki в расширенных псевдонимах с аргументами:
[alias]
example = !sh -c 'ls $2 $1' -
Ответ 3
Вы можете добавить команду Bash noop ":" в конце:
git config --global alias.hello-world '!echo "$1"; :'
Печать
$ git hello-world hello world
hello world