Git: 使用 --author 时别名不解析字符串参数
Git: alias not parsing string argument when using --author
在我的 ~/.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
当Git读取配置文件行时,它使用双引号来引用文本,以避免特殊解释字符。结果是 after 这个解析你的别名读取:
!git add --all && git commit --author=MyUserName <my@email.com> -m
这是一个稍微奇怪的间距和较小的重新排列:
!git add --all && git commit --author=MyUserName < my@email.com > -m
告诉 shell 将 git commit
命令的输入从文件 my@email.com
定向并将其输出写入文件 -m
.
您可以在此处转义引号,或使用不同类型的引号,如 :
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。)
在我的 ~/.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
当Git读取配置文件行时,它使用双引号来引用文本,以避免特殊解释字符。结果是 after 这个解析你的别名读取:
!git add --all && git commit --author=MyUserName <my@email.com> -m
这是一个稍微奇怪的间距和较小的重新排列:
!git add --all && git commit --author=MyUserName < my@email.com > -m
告诉 shell 将 git commit
命令的输入从文件 my@email.com
定向并将其输出写入文件 -m
.
您可以在此处转义引号,或使用不同类型的引号,如
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。)