bashrc 函数,git commit -m 带空格

bashrc 函数,git commit -m 带空格

目前我有这个,如果我像这样使用它,它会按预期工作addcommit 'test commit',但如果我使用它,因为addcommit test commit它只看到第一个单词test。理想情况下,我希望具有其功能addcommit test commit并执行git add . && git commit -m 'test commit'

addcommit()
{   
    git add . && git commit -m "$1"
}

附言。我不明白"$1"在这种情况下它是如何工作的,也许这将是理解它应该如何工作的一个很好的起点。

答案1

"$1"用。。。来代替"$*"

为了完全避免IFS陷阱:

addcommit()
{
   local IFS=' '
   git add . && git commit -m "$*"
}

在这种情况下,别名可以提供帮助,并允许提交消息包含任何字符:

alias addcommit='_m=$(fc -nl -0); git add . && git commit -m "${_m#*addcommit }" #'

addcommit $foo * $bar
# will use the literal "$foo * $bar" message, without expanding it

(适用于 bash 和 ksh93)

相关内容