Как вызвать несколько команд git, используя один псевдоним .gitconfig - PullRequest
0 голосов
/ 20 февраля 2019

Вот мои текущие псевдонимы в .gitconfig, и они отлично работают.Тем не менее, я хотел бы иметь один псевдоним, который может делать все три.

Пример того, что я хотел бы в терминале:

git x my_commit_message

Psuedo-код .gitconfig:

[alias]
         x = add -A <then do> commit -m <use variable from command line> push

У меня установлен push по умолчанию = текущий, поэтому работает только push.

[push]
    default = current

Любая помощь приветствуется, спасибо!

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

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

  1. Сначала начните с !, чтобы Git запускал его как команду оболочки.
  2. Напишите вашу функцию, например: f() { git add -A && git commit -m "$1" && git push }.
  3. Выполните вашу функцию сразу после ее объявления.

Вы должны написать что-то вроде:

[alias]
        x = "!f() { git add -A && git commit -m \"$1\" && git push } f"

Обратите внимание, что:

  • $1 будет заменен вашей переменной из командной строки,
  • && выполнит следующую команду только в том случае, если предыдущая была успешной.
0 голосов
/ 20 февраля 2019

Если вы хотите объединить add, commit и push, вам понадобится функция bash.Git add и commit могут быть объединены с git -am "msg", но push может быть выполнен только как дополнительная команда.Итак, просто определите функцию bash следующим образом:

gacp() {
  git add -A &&
  git commit -m "${1?'Missing commit message'}" &&
  git push
}

Это работает, выполняя сначала git add -A, и , если успешно, затем выполняется команда git commit -m, стребуемое сообщение, и , если успешно выполнено, то git push выполняется.

Важно, чтобы последние команды зависели от успешного выполнения предыдущих командво избежание путаницы вниз по течению.Другими словами, вы на самом деле не хотите commit вносить изменения, если только add не выполнен успешно, и вы действительно не хотите выдвигать свои самые последние коммиты, пока не выполните commit.

Вы используетеэто так:

gacp "Latest changes"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...