Git log 别名-致命:模糊参数'%ad':未知的修订或路径

Git log 别名-致命:模糊参数'%ad':未知的修订或路径

我正在尝试使用Git 沉浸式体验的日志别名:

[alias]
    hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

但 Git 回应

fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

使用 v1.6.1。到目前为止,我所做的只是在主服务器上提交了两次,然后在分支上提交了一次。这个别名在其他地方对我有用,这台特定的机器可能出了什么问题?

编辑-基于莱斯马纳根据下面的建议,我能够确定在将行粘贴到 PuTTY 中后,引号上的反斜杠以某种方式被删除了。当我使用"而不是 时,我收到上述错误\"

答案1

以下是错误信息的来源:

$ 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 配置手动的关于别名和引用:

参数由空格分隔,支持通常的 shell 引用和转义。可以使用引号对和反斜杠来引用它们。

从这一行我无法弄清楚引用和转义是如何工作的。我尝试在别名中使用引用和转义的组合,但无法理解其中的含义。

您在问题中发布的以下几行在我的系统上运行良好:

[alias]
    hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

您必须在使用 PuTTY 等的同时进行实验才能在您的系统上获得正确的组合。

相关内容