Подтвердить что ты не робот

Идентификатор 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)

4b9b3361

Ответ 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 в качестве функции.