我尝试提交并按下一个命令,输入类似的内容:
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
}
哪个有效,除了我不能输入几个单词作为提交消息。我可以跑
gm My_Message
它工作正常,但如果我输入几个单词,比如
gm This is my message
它只会运行git commit -am "This" && git push
。我尝试使用引号,但它返回错误。我该如何配置此功能?
答案 0 :(得分:7)
你需要在调用函数和git命令的地方引用。
function gm() {
git commit -am "$1" && git push
}
gm "This is my message"
另一种方法是:
function gm() {
git commit -am "$*" && git push
}
gm This is my message
但这意味着:
gm This commit has double spaced sections.\t And a tab, \
and a new line
(其中\ t实际上是一个标签)
将提交以下提交消息:
This commit has double spaced sections. And a tab, and a new line
所以所有的空白区都崩溃了。
此外,如果您想输入更复杂和完整的提交消息,您可能希望$EDITOR
完全省略-m
。
此外,如果您立即推送每次提交,那么您并没有真正使用分布式版本控制的强大功能。
答案 1 :(得分:5)
这与您的要求最接近:
git commit -am“$ *”&& git push
$ 1具体表示(空格分隔)列表中的第一个参数。
NB。我最初写的是“$ @”,但是扩展为“$ 1”“$ 2”...,这不是你想要的:“$ *”扩展为带有所有参数的单引号字符串。
简单地引用字符串可能更为明智,特别是如果你关心shell扼杀空白(所以运行gm "my commit message"
并使用道格拉斯描述的"$1"
语法)
如果真的关心格式化,最好使用外部编辑器。只需完全省略-m
参数,确保将$EDITOR
设置为您要使用的内容,然后查看此note about git commit messages。
答案 2 :(得分:3)
git config --global alias.acp '!f() { git add -A && git commit -m "$@" && git push; }; f'
将为本机git命令设置名为acp
的别名。
现在您可以轻松运行git acp "commit messages here!"
答案 3 :(得分:0)
您可以使用引号封装单词,例如gm "this is my message"
。