Passer un argument à une commande d’alias Git

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