使用git commit -a -m时不想使用双引号

Hav*_*veF 3 git bash shell

当我使用git commit时,我有点厌倦了使用双引号

git commit -a -m "fix xxx error"
Run Code Online (Sandbox Code Playgroud)

当我设置这样的别名:

coam = "!f() { git commit -a -m $1; }; f"
Run Code Online (Sandbox Code Playgroud)

它在我输入时有效

git coam fix
Run Code Online (Sandbox Code Playgroud)

它承诺为

git commit -a -m "fix"
Run Code Online (Sandbox Code Playgroud)

但是如何设置一个可以处理的命令

git commit -a -m "fix xxx error"
Run Code Online (Sandbox Code Playgroud)

当我打字的时候

git coam fix xxx error
Run Code Online (Sandbox Code Playgroud)

我测试一下

coam = "!f() { git commit -a -m $*; }; f"
Run Code Online (Sandbox Code Playgroud)

但它不起作用!

谢谢!

fge*_*fge 9

"我有点厌倦了使用双引号,"< - 但你没有选择.

这就是shell的工作原理:它有一些机制可以使它如果一个参数包含通常是输入字段分隔符的字符(提示:这就是为什么IFS环境变量以它的方式命名),它仍然作为一个参数通过将要执行的命令.

git commit-m选项需要一个参数.这些双引号是必要的.

你可以转过来的唯一方法是拥有自己的小shell脚本,它将为你收集这些参数:

#!/bin/bash
exec git commit -a -m "$*"
Run Code Online (Sandbox Code Playgroud)

如果调用上面的脚本mygitcm并在您的路径中,您可以执行以下操作:

mygitcm my commit message here
Run Code Online (Sandbox Code Playgroud)

引用你的例子,我想这会起作用:

coam = "!f() { git commit -a -m \"$*\"; }; f"
Run Code Online (Sandbox Code Playgroud)

(当然,另一个好主意是制作解释性的提交消息;))

  • +1为"解释性"提交消息的最后一个语句. (3认同)