Puis-je transmettre des arguments à l’alias d’une commande Git?
J’ai un alias dans la configuration de Git, comme ceci:
rb1 = rebase -i HEAD~1 rb2 = rebase -i HEAD~2 rb3 = rebase -i HEAD~3 rb4 = rebase -i HEAD~4 ....
Est-il possible de créer un alias rb
pour que git rb
fonctionne pour n’importe quel ?
J’ai essayé cet alias:
rb = rebase -i HEAD~
mais par exemple, git rb 8
ne fonctionne pas.
Si vous considérez la section Git Faq “Alias de Git avec argument” , vous pouvez le faire, mais en appelant git via un shell:
[alias] rb = "!sh -c \"git rebase -i HEAD~$1\" -"
Je ne l’ai pas encore testé, mais si vous pouvez passer un argument, ce serait la façon de le faire.
Une solution similaire serait d’utiliser une fonction shell :
[alias] rb = "!f() { git rebase -i HEAD~$1; }; f"
Rebaser tous les commits depuis la ramification
Si vous voulez simplement rebaser tous les commits qui sont nouveaux dans votre twig, depuis le twigment depuis la twig parente, il serait plus facile de simplement avoir l’alias suivant dans votre configuration:
rbi = !sh -c \"git rebase -i `git merge-base $1 HEAD`\" -
Ensuite, si vous souhaitez réinitialiser tous les commits que vous avez ajoutés à votre succursale actuelle, vous pouvez simplement exécuter:
git rbi parentBranch
Cette approche utilise un argument, mais au lieu d’avoir à connaître le nombre de validations à effectuer, il vous suffit de fournir le nom de la twig et de déterminer la dernière validation partagée entre la twig actuelle et la twig parente via git merge-base
Pourquoi cela plutôt que git rebase -i parentBranch
La raison pour laquelle vous feriez cela plutôt qu’une git rebase -i parentBranch
est que vous pourriez ne pas vouloir traiter les conflits de fusion jusqu’à un moment ultérieur, ou même gérer un conflit de fusion dans une validation, puis le même conflit. sur la même ligne dans un autre commit. Voir https://stackoverflow.com/a/31036645/444610
J’ai écrit cette fonction “grb” pour faire un rebase interactif Git sur un Mac, donc je peux dire grb 5
pour montrer mes 5 derniers commits:
function grb { git rebase -i HEAD\~$1 }
La première réponse sur cette page ne fonctionne pas pour moi. Pour voir mon .bash_profile
et tous les autres alias Git que j’utilise sur mon Mac:
https://github.com/rayning0/bash_profile/blob/master/.bash_profile#L149