我正在尝试为我的简单git add/commit/push创建一个带参数的别名。
我看到一个函数可以用作别名,所以我尝试了,但没有成功。
我方才道:
alias gitall="git add . ; git commit -m 'update' ; git push"
但是我希望能够修改我的提交:
function gitall() {
"git add ."
if [$1 != ""]
"git commit -m $1"
else
"git commit -m 'update'"
fi
"git push"
}
7条答案
按热度按时间4uqofj5v1#
如果出于某种原因确实需要使用带参数的别名,可以通过在别名中嵌入一个函数并立即执行它来破解它:
我看到这种方法在.gitconfig别名中使用得很多。
6ss1mwsb2#
你不能用参数 * 来创建别名,它必须是一个函数。你的函数很接近,你只需要用引号括起某些参数而不是整个命令,并在
[]
中添加空格。fzwojiic3#
我在.zshrc文件中使用了此函数:
这里
git push origin HEAD
负责将你当前的分支推送到远程。从命令提示符运行以下命令:
gitall "commit message goes here"
如果我们只运行
gitall
而没有任何提交消息,那么提交消息将是update
,正如函数所说。nzrxty8p4#
"git add ."
和"
之间的其他命令只是bash的字符串,请删除"
。您可能希望在if主体中使用
[ -n "$1" ]
。s6fujrry5#
我尝试接受的答案(Kevin的),但得到以下错误
因此,根据git issue将语法更改为这样,并且它工作了。
pkbketx96#
我可以很容易地添加参数,只需使用$1。
例如:
alias gsf="git show --name-only $1"
工作得很好。我用
gsf 2342aa225
来调用它alen0pnh7#
带参数的别名
TL;DR:
使用带参数的别名:
已过期
(空格分隔)别名后面的字符将被视为您写入它们的顺序中的参数。
它们不能像函数那样被排序或改变。例如,通过别名将参数放在命令中间,在函数或子shell的帮助下确实是可能的:看@汤姆的回答
此行为类似于
bash
。