Функция в bash для фиксации и нажатия одной команды - PullRequest
6 голосов
/ 21 октября 2011

Я пытаюсь зафиксировать и нажать одну команду, набрав что-то вроде:

gm "This is my commit message"

Что будет работать:

git commit -am "This is my commit message" && git push

Я попробовал эту функцию в моем .bashrc:

function gm() {
     git commit -am $1 && git push
}

, который работает, за исключением того факта, что я не могу набрать несколько слов в качестве сообщения коммита.Я могу запустить

gm My_Message

, и он работает нормально, но если я наберу несколько слов, например

gm This is my message

Он будет работать толькоgit commit -am "This" && git push.Я пытался использовать кавычки, но он возвращает ошибку.Как мне настроить эту функцию для работы?

Ответы [ 4 ]

7 голосов
/ 21 октября 2011

Вам нужны кавычки вокруг места вызова функции и команды git.

function gm() {
     git commit -am "$1" && git push
}

gm "This is my message"

Альтернативный подход:

function gm() {
     git commit -am "$*" && git push
}

gm This is my message

Но это будет означать, что:

gm This commit  has double  spaced sections.\t And a tab, \
and a new line

(где \ t на самом деле является вкладкой)
выдаст сообщение о коммите:

This commit has double spaced sections. And a tab, and a new line

Таким образом, все пустое пространство свернуто.

Кроме того,если вы хотите ввести более сложное и полное сообщение о коммите, вам может потребоваться $EDITOR и полностью пропустить -m.

Кроме того, вы на самом деле не используете возможности распределенного контроля версий, если вынемедленно нажимайте каждый коммит.

5 голосов
/ 21 октября 2011

Новый расширенный ответ

  • Это наиболее близко к тому, что вы просите:

    git commit -am "$ *" && git push

$ 1 определенно означает первый аргумент в (разделенном пробелами) списке.

NB.Первоначально я написал «$ @», но это расширилось до «$ 1», «$ 2» ..., а это не то, что вам нужно: «$ *» расширяется до одной строки в кавычках со всеми аргументами.

  • Простое цитирование строки может быть более разумным, особенно если вам небезразлично использование пробелов в оболочке (запустите gm "my commit message" и используйте синтаксис "$1", описанный Дугласом)

  • Лучше использовать внешний редактор, если вы действительно заботитесь о форматировании.Просто полностью опустите аргумент -m, убедитесь, что для $EDITOR установлено то, что вам нравится использовать, и посмотрите на это примечание о сообщениях git commit .

3 голосов
/ 30 июня 2016

ИМХО, лучшим подходом будет:

git config --global alias.acp '!f() { git add -A && git commit -m "$@" && git push; }; f'

, который установит псевдоним с именем acp для собственной команды git.

Теперь вы можете легко запустить git acp "commit messages here!"

0 голосов
/ 21 октября 2011

Вы будете заключать слова в кавычки, например gm "this is my message".

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