这是错误消息的来源:
$ git log %ad
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
您将从以下两个命令中获得相同的错误消息:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
$ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
问题在于,它git log
接收到以下两个参数:(--pretty=format:%h
或--pretty=format:\"%h
)和%ad
。其余的,至少当直接作为bash中的命令直接执行时,是命令的管道%s%d
,通常不存在。因此,我系统上的完整错误消息如下所示:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
bash: %s%d: command not found
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
所有这一切都表明该报价丢失了,%ad
并被解释为git log的参数。为避免这种情况,您必须找到正确的引号和转义组合,以便在执行时正确引用格式字符串。
关于别名和引用的git config 手册:
参数由空格分隔,支持通常的shell引用和转义。引号对和反斜杠可用于引用它们。
从这一行,我无法弄清楚引号和转义的工作方式。我在别名中尝试了一些引号和转义的组合,但没有任何意义。
您在问题中发布的以下几行在我的系统上运行正常:
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
您将不得不尝试在使用PuTTY和所有功能时在系统上获得正确的组合。