Bash别名环绕Git提交

时间:2019-02-12 23:34:39

标签: bash git alias

我正在尝试编写bash别名来包装Git commit命令。

这是我典型的Git提交的样子。 git commit -am 'Comments in here'

这是我尝试作为别名编写的内容(它将放在我的.bashrc文件中),因此我不必每次都写出整个命令。

comm(){ git commit -am $1 }

然后我会这样称呼它:comm 'Comments in here'

但是我仍然收到此错误:fatal: Paths with -a does not make sense.

我这里想念什么吗?

2 个答案:

答案 0 :(得分:0)

-a (自动添加)选项引起了错误。如果将其与git命令中的路径一起使用,则会出错。

-m选项需要一个参数,即消息,因此您要么需要让函数管理两个参数,要么需要更改函数的使用方式。

要提供通用的git-checkin-with-message功能,我将使用以下方式:

gcim() {
  git commit -m "${1:?'Missing git commit message!'}"
}

然后像git commit -m一样使用它。例如:

gcim "My cool commit does really good stuff"

将文件添加到提交中通常总是比事前 更好。如果您碰巧使用git -a作为参数,.将很高兴添加所有文件。保护git commit -a避免插入不需要的文件的唯一方法是正确构建的.gitignore文件。

但是,如果有时您想执行git -a -m "some msg"命令,则可以执行其他功能:

gciam() {
  local msg="${1:?Missing commit message!}"
  shift
  if (( $# > 0 )) ; then
    git commit -m "$msg" $*
  else
    echo "Missing files to add!"
  fi
}

然后使用:

gciam "added new file" that_file.rb

答案 1 :(得分:0)

Use More Quotes™-$1被分解为个单词(在* nix shell脚本中具有特殊含义)。因此,除了提交消息中的第一个单词外,其他任何单词都被视为文件名,而对于-a而言,这确实没有意义。