Передайте аргумент команде псевдонима Git - PullRequest
65 голосов
/ 10 августа 2011

Могу ли я передать аргументы псевдониму команды Git?

У меня есть несколько псевдонимов в конфигурации Git, например:

rb1 = rebase -i HEAD~1
rb2 = rebase -i HEAD~2
rb3 = rebase -i HEAD~3
rb4 = rebase -i HEAD~4
....

Можно ли сделать rbпсевдоним, так что git rb <x> работает для любого <x>?

Я пробовал этот псевдоним:

rb = rebase -i HEAD~

, но, например, git rb 8 не работает.

Ответы [ 3 ]

90 голосов
/ 10 августа 2011

Если вы рассмотрите раздел Git Faq "Git Aliases с аргументом" , вы можете сделать это, но вызвав git через оболочку:

[alias]
        rb = "!sh -c \"git rebase -i HEAD~$1\" -"

Я еще не проверял это, но если вы можете передать аргумент, это был бы способ сделать это.

Аналогичным решением будет использование функции оболочки :

[alias]
        rb = "!f() { git rebase -i HEAD~$1; }; f"
4 голосов
/ 24 июня 2015

Перебазирование всех коммитов с момента ветвления

Если вы просто хотите перебазировать все коммиты, которые являются новыми в вашей ветке, со времени, когда вы переходили из родительской ветки, было бы проще просто иметь следующий псевдоним в вашей конфигурации:

rbi = !sh -c \"git rebase -i `git merge-base $1 HEAD`\" -

Затем, если вы хотите перебазировать все коммиты, которые вы добавили в вашу текущую ветку, вы можете просто запустить:

git rbi parentBranch

В этом подходе используется аргумент, но вместо того, чтобы знать, сколько коммитов нужно вернуть, вы просто указываете имя ветви, и он вычисляет самый последний коммит, общий для текущей ветви и родительской ветви, через git merge-base

Почему это, а не git rebase -i parentBranch

Причина, по которой вы делаете это, а не прямая git rebase -i parentBranch, заключается в том, что вы можете не захотеть иметь дело с конфликтами слияния до более поздней точки или даже иметь дело с конфликтом слияния в одном коммите, а затем в том же самом конфликт по той же линии в другом коммите. См https://stackoverflow.com/a/31036645/444610

0 голосов
/ 07 июля 2018

Я написал эту функцию "grb" для интерактивного перебазирования Git на Mac, поэтому я могу сказать grb 5, чтобы показать мои последние 5 коммитов:

function grb {
  git rebase -i HEAD\~$1
}

Верхний ответ на этой страницеработать на меня.Чтобы увидеть мои .bash_profile и все другие псевдонимы Git, которые я использую на своем Mac:

https://github.com/rayning0/bash_profile/blob/master/.bash_profile#L149

...