2015-12-17 2 views
26

Я пытаюсь создать псевдоним с параметром для моего простого git add/commit/push.Идентификатор ZSH с параметром

Я видел функция может быть использована в качестве псевдонима, поэтому я стараюсь, но я не сделал это ..

, прежде чем я имел:

alias gitall="git add . ; git commit -m 'update' ; git push" 

Но я хочу, чтобы иметь возможность изменить мой обязуется:

function gitall() { 
    "git add ." 
    if [$1 != ""] 
     "git commit -m $1" 
    else 
     "git commit -m 'update'" 
    fi 
    "git push" 
} 

(я знаю, что это ужасно мерзавец практика)

ответ

33

Вы не можете сделать псевдоним с аргументами *, это должна быть функция. Ваша функция близка, вам просто нужно указать некоторые аргументы вместо всех команд и добавить пробелы внутри [].

function gitall() { 
    git add . 
    if [ "$1" != "" ] # or better, if [ -n "$1" ] 
    then 
     git commit -m "$1" 
    else 
     git commit -m update 
    fi 
    git push 
} 

*: Большинство снарядов не дают аргументы в псевдонимами, я считаю, CSH и производные делать, но you shouldn't be using them anyway.

+0

'csh', но он вообще не имеет функций. (Я не знаю, нет ли каких-либо функций, потому что псевдонимы могут принимать параметры, или если псевдонимы принимают параметры, потому что нет никаких функций или что.) – chepner

+0

Так вы бы назвали это (из оболочки), как '' 'gitall 'my зафиксировать сообщение "' ''? или вы бы назвали его '' 'gitall ('my commit message')' '' – archae0pteryx

+0

@ archae0pteryx функции называются точно так же, как и любая другая команда, поэтому 'gitall" мое сообщение commit ". – Kevin

3

"git add ." и другие команды между " - это просто строки для bash, удалите " s.

Возможно, вы захотите использовать [ -n "$1" ] вместо вашего тела.

26

Если вам действительно нужно использовать псевдоним с параметром по какой-то причине, вы можете взломать его путем встраивания функции в псевдониме и немедленно его выполнение:

alias example='f() { echo Your arg was $1. };f' 

Я вижу этот подход используется много в .gitconfig aliases.

+1

Настолько взломанный и все же такой красивый – misaka

+2

Зачем делать псевдоним вообще? Просто вызовите функцию 'example'. – tripleee

0

Я использовал эту функцию в файле .zshrc:

function gitall() { 
    git add . 
    if [ "$1" != "" ] 
    then 
     git commit -m "$1" 
    else 
     git commit -m update # default commit message is `update` 
    fi 
    git push origin HEAD 
} 

Здесь git push origin HEAD отвечает нажать текущую ветвь на пульте дистанционного управления.

Из командной строки запустите следующую команду: gitall "commit message goes here"

Если мы просто запустить gitall без какой-либо фиксации сообщение, тогда обязательство будет update как функция сказал.

 Смежные вопросы

  • Нет связанных вопросов^_^