git log 抛出错误“参数模棱两可”

git log 抛出错误“参数模棱两可”

大约一年前,这种方法还管用。但现在不行了:

git log --abbrev=6

预期结果是所有提交哈希都缩写为 6 个字符。

实际结果现在是此错误消息:

致命错误:参数“6”不明确:未知修订或路径不在工作树中。
使用“--”将路径与修订分开,如下所示:
“git [...] -- [...]”

我的印象是 Git 甚至不知道该参数并试图默默地忽略它的名称但不忽略其值。

在 Windows 7 上使用 Git 1.8.1.msysgit.1。

添加:哦,其他参数也失败了。整个命令是:

git log --abbrev=6 --format=format:"----- Commit %%h on %%ci by %%an -----%%n%%n%%B"

如果我省略缩写部分,它仍然会返回另一个错误:

致命:对象名称‘格式’无效。

答案1

以上两种方法对我来说都没有失败,但它们也不起作用,至少对我在 Mac/Unix 上来说不是。

第一个错误被抛出是因为 Git 正在解析你的语句,好像--abbrev是一个一元标志(即不接受参数)并且6是一个单一对象引用(例如分支名称、SHA 等)。例如:

git log --abbrev GITREF    # Like branch or tag '6'

它似乎对format关键字做了同样的事情。

我的猜测是以下之一:

  1. Windows 终端仿真器中的命令行解析明显不符合 UNIX 风格,导致选项严重混乱
  2. 你的 Git 版本中有一个 bug,但它并不影响基础代码,因此没有出现在主要的 Git 发行说明中(我检查过了……)
  3. 处理方式可能发生的变化--abbrev在发行说明中被省略了(我再次检查了......)

只是出于好奇,请让我知道以下任何一种方法是否有效(注意:我删除了百分号的重复项。那是 Windows 的事情吗?):

git log --format=format:'----- Commit %h on %ci by %an -----%n%n%B' --abbrev=6
git log --format=format:'----- Commit %h on %ci by %an -----%n%n%B' --abbrev-commit
git log --pretty=format:'----- Commit %h on %ci by %an -----%n%n%B' --abbrev=6
git log --pretty=format:'----- Commit %h on %ci by %an -----%n%n%B' --abbrev-commit

相关内容