Я пытаюсь создать псевдоним с параметром для моего простого git add / commit / push.
Я видел, что Function можно использовать как псевдоним, поэтому я попробовал, но не смог ..
раньше у меня было:
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"
}
(я знаю, что это ужасная практика мерзавцев)
csh
есть, но у него вообще нет функций. (Я не знаю, нет ли функций, потому что псевдонимы могут принимать параметры, или если псевдонимы принимают параметры, потому что нет функций, или что-то еще.)gitall "my commit message"
? или вы бы это назвалиgitall('my commit message')
gitall "my commit message"
.getall() {
без предшествующегоfunction
- конечно, это законно в любом случае в zsh, но это единственное изменение сделает его совместимым со всеми POSIX-совместимыми оболочками.git commit -m "${1:-update}"
(расширение параметра с предоставленным по умолчанию), тогда вам вообще не понадобится этотif
оператор.Если по какой-то причине вам действительно нужно использовать псевдоним с параметром, вы можете взломать его, встроив функцию в свой псевдоним и сразу же выполнив ее:
alias example='f() { echo Your arg was $1. };f'
Я вижу, что этот подход часто используется в псевдонимах .gitconfig.
источник
example
.alias example='(){ echo Your arg was $1. ;}'
Я использовал эту функцию в файле .zshrc:
function gitall() { git add . if [ "$1" != "" ] then git commit -m "$1" else git commit -m update # default commit message is `update` fi # closing statement of if-else block git push origin HEAD }
Вот
git push origin HEAD
отвечает за удаленное нажатие вашей текущей ветки.Из командной строки запустите эту команду:
gitall "commit message goes here"
Если мы просто запустим
gitall
без какого-либо сообщения о фиксации, то сообщение о фиксации будет таким,update
как сказала функция.источник
"git add ."
а другие команды между ними"
- это просто строки для bash, удалите"
s.Возможно, вы захотите использовать
[ -n "$1" ]
вместо этого в своем теле if.источник
Я попробовал принятый ответ (Кевин), но получил следующую ошибку
defining function based on alias `gitall' parse error near `()'
Следовательно, изменил синтаксис на этот, основываясь на проблеме git, и это сработало.
function gitall { git add . if [ "$1" != "" ] then git commit -m "$1" else git commit -m update fi git push }
источник