3

在回答“在本地执行的 Git pull hook 脚本”时,我偶然发现了一个用例来给内置 git 命令起别名,例如pullpush带有扩展名。我怎么做?

第一个想法是:

[alias]
    push = "!echo -n \"really push? [y/n]\";read -s -n 1 really;if [[ $really == \"y\" ]];then git push; else echo \"aborting\"; fi"

只要我不命名我的别名push(例如qp或类似的名称),这就可以正常工作。但是,一旦我调用它push,它就会以某种方式被忽略。

有没有一种 git 方法可以使用别名扩展内置 git 命令,或者我是否必须在我的 git 中设置别名.bashrc

4

1 回答 1

5

简短的回答:你不能

Git 明确禁止这样做,以防止可能影响 git 命令调用(在脚本等中)的混淆和阴影。请参阅git-config 手册页

alias.*

git(1) 命令包装器的命令别名 - 例如,在定义“alias.last = cat-file commit HEAD”之后,调用“git last”等效于“git cat-file commit HEAD”。为了避免脚本使用的混乱和麻烦,隐藏现有 git 命令的别名将被忽略。参数由空格分隔,支持通常的 shell 引用和转义。引号对和反斜杠可用于引用它们。

正如您所指出的,您可以将别名命名为其他名称并使用它,或者在bash. 但是,请注意 bash 中的多字别名是不可能的,因此您不能有“git push”的别名。相反,您需要使用一个函数——请参阅 SuperUser 上的“ Bash:别名中的空格”以获取一些提示(您可能可以批量采用它)。

于 2012-06-27T12:25:11.753 回答