3

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

git commit -a -m "fix xxx error"

当我这样设置别名时:

coam = "!f() { git commit -a -m $1; }; f"

当我打字时它工作

git coam fix

它提交为

git commit -a -m "fix"

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

git commit -a -m "fix xxx error"

当我只是输入

git coam fix xxx error

我测试

coam = "!f() { git commit -a -m $*; }; f"

但它不起作用!

谢谢!

4

2 回答 2

10

“我有点厌倦使用双引号,” <-- 但你别无选择。

这就是 shell 的工作方式:它有机制来实现,如果一个参数包含通常是输入字段分隔符的字符(提示:这就是IFS环境变量被命名的原因),它仍然被当作一个参数通过将要执行的命令。

并且git commit's-m选项采用单个参数。这些双引号是必要的。

您可以扭转这种局面的唯一方法是拥有自己的小 shell 脚本,它将为您收集这些参数:

#!/bin/bash
exec git commit -a -m "$*"

如果上面的脚本被调用mygitcm并且在你的路径中,你可以这样做:

mygitcm my commit message here

引用您的示例,我想这会起作用:

coam = "!f() { git commit -a -m \"$*\"; }; f"

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

于 2013-01-10T13:04:10.887 回答
1
function gc { git commit -a -m "$*"; }
于 2021-01-26T01:14:57.523 回答