Linux 为git commit添加别名,以便不需要引号

Linux 为git commit添加别名,以便不需要引号,linux,git,zsh,alias,Linux,Git,Zsh,Alias,在git中,当我提交更改时,我使用: git commit -m "my commit message" 我发现每次打字都很耗时,特别是因为我有一个习惯,随着时间的推移,我会做出很多小的承诺 例如,我想要一个更简单的别名 gm commit message 我不喜欢在提交消息前后键入引号,“gm”比“git commit-m”快得多 在.zshrc文件中创建此别名的最佳方法是什么?在zsh中: setopt interactive_comments preexec(){

在git中,当我提交更改时,我使用:

git commit -m "my commit message"
我发现每次打字都很耗时,特别是因为我有一个习惯,随着时间的推移,我会做出很多小的承诺

例如,我想要一个更简单的别名

gm commit message
我不喜欢在提交消息前后键入引号,“gm”比“git commit-m”快得多


在.zshrc文件中创建此别名的最佳方法是什么?

zsh中:

setopt interactive_comments
preexec(){ _lc=$1; }
alias gm='git commit -m "${_lc#gm }" #'
然后:

请注意,您的其他别名等可能使用
preexec
函数;您可能需要修改它,而不仅仅是覆盖它


bashksh93中,没有
preexec
,但您可以从历史记录中获取当前命令:

alias gm='_lc=$(fc -nl -0); git commit -m "${_lc#*gm }" #' 
此外,bash和ksh93默认在交互式脚本中识别注释

gm() { git commit -m "$*" }

实际上,如果这些是您将在任何地方发布或保留为历史记录的提交,您应该省略
-m“message”
,并在编辑器中键入更完整的描述;如果它们只是在发布/合并之前要挤压的检查点,
-mwip
很好(一个单词不需要引号)。我得到以下错误:“基于别名gm定义函数”&“parse error near()”@Hitomi90,这是因为您已经定义了别名;在定义函数之前,请使用
unalias gm
。您还可以使用
函数gm(){git commit-m“$*”}
,它不会显示错误,但定义的函数将被别名隐藏。
gm() { git commit -m "$*" }
gm this works
gm but you need to quote special chars\!