Git:别名在使用--author时不解析字符串参数

时间:2018-06-19 05:17:23

标签: git alias

在我的~/.gitconfig中,我有类似

的内容
[alias]
    ac = !git add --all && git commit -m
    mileung = !git add --all && git commit --author="MyUserName <my@email.com>" -m

正在运行git ac "message",但正在运行git mileung "another message"会产生git add --all && git commit --author=MyUserName <my@email.com> -m: my@email.com: No such file or directory

1 个答案:

答案 0 :(得分:2)

当Git读取配置文件行时,它使用双引号引用文本,以避免专门解释字符。结果是之后解析你的别名:

!git add --all && git commit --author=MyUserName <my@email.com> -m

这是一个略微奇怪的间距和重新安排:

!git add --all && git commit --author=MyUserName < my@email.com > -m

告诉shell指示文件git commitmy@email.com命令的输入并将其输出写入文件-m

您可以在此处转义引号,或使用其他类型的引号bimlas suggested in a comment

mileung = !git add --all && git commit --author=\"MyUserName <my@email.com>\" -m

(这个版本让Git不吃双引号,所以shell看到它们而 shell 代替它们同时保护尖括号和空格),或者:

mileung = !git add --all && git commit --author='MyUserName <my@email.com>' -m

(这里Git不吃单引号,所以shell看到单引号,用它们引用尖括号和空格,然后吃掉单引号)。

(这个问题根本不是Git独有的;请参阅,例如Trouble escaping quotes in a shell script。)