我正在尝试编写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.
我这里想念什么吗?
答案 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
而言,这确实没有意义。