Pasar un argumento a un command Git alias

¿Puedo pasar arguments al alias de un command Git?

Tengo algunos alias en la configuration de Git, así:

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

¿Es posible crear un alias rb para que git rb <x> funcione para cualquier <x> ?

Intenté este alias:

 rb = rebase -i HEAD~ 

pero luego, por ejemplo, git rb 8 no funciona.

Si considera la sección de Git Faq "Alias ​​de Git con argumento" , podría hacerlo, pero llamando a git a través de un shell:

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

Aún no lo he probado, pero si puede pasar una discusión, esa sería la manera de hacerlo.

Una solución similar sería usar una function de shell :

 [alias] rb = "!f() { git rebase -i HEAD~$1; }; f" 

Reasignación de todas las confirmaciones desde la ramificación

Si solo desea volver a establecer la base de todas las confirmaciones nuevas en su sucursal, desde el momento en que se ramificó desde la sucursal principal, sería más fácil tener el siguiente alias en su configuration:

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

Luego, si desea volver a establecer la base de todas las confirmaciones que ha agregado a su sucursal actual, simplemente puede ejecutar:

 git rbi parentBranch 

Este enfoque utiliza un argumento, pero en lugar de tener que saber cuántos commits se deben devolver, solo proporciona el nombre de la twig, y ​​se da count de la confirmación más reciente compartida entre la twig actual y la twig principal a través de git merge-base

Por qué esto, en lugar de git rebase -i parentBranch

La razón por la que harías esto en lugar de una git rebase -i parentBranch recta de git rebase -i parentBranch es que tal vez no quieras lidiar con los conflictos de combinación hasta un punto posterior, o incluso lidiar con un conflicto de combinación en una confirmación, y luego el mismo conflicto en la misma línea en otro commit. Ver http://sofes.miximages.com/a/31036645/444610