我可以将参数传递给Git命令的别名吗?
我在Git配置中有一些别名,比如:
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
不能工作。
发布于 2011-08-10 11:54:26
如果你考虑Git Faq section "Git Aliases with argument",你可以这样做,但是通过一个shell调用git:
[alias]
rb = "!sh -c \"git rebase -i HEAD~$1\" -"
我还没有测试过它,但是如果你可以传递一个参数,这将是一种方法。
一种类似的解决方案是使用shell function
[alias]
rb = "!f() { git rebase -i HEAD~$1; }; f"
发布于 2018-07-07 23:09:00
我写了这个函数"grb“来在苹果电脑上执行Git交互式rebase,所以我可以说grb 5
来显示我最近的5次提交:
function grb {
git rebase -i HEAD~$1
}
这页最上面的答案对我不起作用。要查看我的.zprofile
和我在Mac上使用的所有其他Git别名:
https://github.com/rayning0/zsh_profile/blob/master/.zprofile#L157
发布于 2019-08-17 07:39:01
@Droogans在接受答案的comment中指出,至少在macOS上(我想这同样适用于任何类unix的操作系统,甚至可能是windows),你可以只使用$1
作为代表别名中参数的占位符值。因此,要设置别名以使git rb 8
成为git rebase -i HEAD~8
rb = "!git rebase -i HEAD~$1;"
您还可以在别名中多次使用它,因此,例如,如果您想要一个将git f my-branch
转换为git fetch origin my-branch:my-branch
的别名,您可以这样做:
f = "!git fetch origin $1:$1"
https://stackoverflow.com/questions/7005513
复制相似问题