我尝试提交并推送一个命令,输入如下内容:
gm "This is my commit message"
哪个会运行:
git commit -am "This is my commit message" && git push
我在我的尝试过这个功能.bashrc:
function gm() {
git commit -am $1 && git push
}
Run Code Online (Sandbox Code Playgroud)
哪个有效,除了我不能输入几个单词作为提交消息.我可以跑
gm My_Message
它工作正常,但如果我输入几个单词,比如
gm This is my message
它只会运行git commit -am "This" && git push.我尝试使用引号,但它返回错误.我该如何配置此功能?
你需要在调用函数和git命令的地方引用.
function gm() {
git commit -am "$1" && git push
}
gm "This is my message"
Run Code Online (Sandbox Code Playgroud)
另一种方法是:
function gm() {
git commit -am "$*" && git push
}
gm This is my message
Run Code Online (Sandbox Code Playgroud)
但这意味着:
gm This commit has double spaced sections.\t And a tab, \
and a new line
Run Code Online (Sandbox Code Playgroud)
(其中\ t实际上是一个选项卡)
将提供以下提交消息:
This commit has double spaced sections. And a tab, and a new line
Run Code Online (Sandbox Code Playgroud)
所以所有的空白区域都崩溃了.
此外,如果您想输入更复杂和完整的提交消息,您可能想要完全$EDITOR省略-m.
此外,如果您立即推送每个提交,您实际上并没有真正使用分布式版本控制的强大功能.
这与您要求的最接近:
git commit -am"$*"&& git push
$ 1具体表示(空格分隔)列表中的第一个参数.
NB.我最初写的是"$ @",但是扩展为"$ 1""$ 2"...,这不是你想要的:"$*"扩展为带有所有参数的单引号字符串.
简单地引用字符串可能更明智,特别是如果你关心shell扼杀空白(所以运行gm "my commit message"并使用"$1"Douglas描述的语法)
如果您真的关心格式化,最好使用外部编辑器.-m完全省略参数,确保$EDITOR设置为您想要使用的内容,并查看有关git commit消息的说明.