Pass an argument to a Git alias command

HaveF picture HaveF · Aug 10, 2011 · Viewed 22.5k times · Source

Can I pass arguments to the alias of a Git command?

I have some alias in Git config, like so:

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

Is it possible to make an rb alias so that git rb <x> works for any <x>?

I tried this alias:

rb = rebase -i HEAD~

but then for instance git rb 8 does not work.

Answer

VonC picture VonC · Aug 10, 2011

If you consider the Git Faq section "Git Aliases with argument", you could do it, but by calling git through a shell:

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

I haven't tested it yet, but if you can pass an argument, that would be the way to do it.

A similar solution would be to use a shell function:

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