Передать аргумент команде git alias
могу ли я передать аргументы в псевдоним команды Git?
у меня есть какой-то псевдоним в git config, например:
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 ответа:
Если вы считаете Git Faq раздел "Git псевдонимы с аргументом", вы могли бы сделать это, но, вызвав git через оболочку:
[alias] rb = "!sh -c \"git rebase -i HEAD~\" -"
Я еще не тестировал его, но если вы можете передать аргумент, это будет способ сделать это.
аналогичное решение было бы использовать функция Shell:
[alias] rb = "!f() { git rebase -i HEAD~; }; f"
перебазирование всех коммитов с момента ветвления
если вы просто хотите перебазировать все коммиты, которые являются новыми в вашей ветви, так как время, когда вы ветвились от родительской ветви, было бы проще просто иметь следующий псевдоним в вашей конфигурации:
rbi = !sh -c \"git rebase -i `git merge-base HEAD`\" -
затем, если вы хотите перебазировать все коммиты, которые вы добавили в свою текущую ветку, вы можете просто запустить:
git rbi parentBranch
этот подход использует аргумент, но вместо того, чтобы знать, как многие коммиты возвращаются, вы просто указываете имя ветви, и он выясняет, что самая последняя фиксация разделена между текущей ветвью и родительской ветвью через
git merge-base
почему это, а не git rebase-i parentBranch
причина, по которой вы сделали бы это, а не прямой
git rebase -i parentBranch
возможно, вы не захотите иметь дело с конфликтами слияния до более позднего момента или даже иметь дело с конфликтом слияния в одном коммите, а затем с тем же конфликтом на том же самом строка в другом коммите. Смотрите https://stackoverflow.com/a/31036645/444610
Я написал эту функцию "grb", чтобы сделать git interactive rebase на Mac, поэтому я могу сказать
grb 5
показать мои последние 5 коммитов:function grb { git rebase -i HEAD\~ }
лучшие ответы на этой странице не работает для меня. Чтобы увидеть мой
.bash_profile
и все другие псевдонимы Git, которые я использую на своем Mac:https://github.com/rayning0/bash_profile/blob/master/.bash_profile#L149