Идентификатор ZSH с параметром
Я пытаюсь сделать псевдоним с параметром для моего простого git add/commit/push.
Я видел, что функция может использоваться как псевдоним, поэтому я пытаюсь, но я не сделал этого.
до того, как я:
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"
}
(я знаю, что это ужасная практика git)
Ответы
Ответ 1
Вы не можете создать псевдоним с аргументами *, это должна быть функция. Ваша функция близка, вам просто нужно указать некоторые аргументы вместо всех команд и добавить пробелы внутри []
.
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 и производные делают, но вы не должны их использовать в любом случае.суб >
Ответ 2
Если вам действительно нужно использовать псевдоним с параметром по какой-либо причине, вы можете его взломать, вставив функцию в свой псевдоним и сразу же выполнив ее:
alias example='f() { echo Your arg was $1. };f'
Я вижу, что этот подход много использовал в псевдонимах .gitconfig.
Ответ 3
"git add ."
, а остальные команды между "
- это просто строки для bash, удалите "
s.
Возможно, вы захотите использовать [ -n "$1" ]
в своем теле if.
Ответ 4
Я использовал эту функцию в файле .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
в качестве функции.