git log --pretty=format在windows环境下表现奇怪

5
我将问题简化到最基本的层面。 在Linux下,类似这样的git命令:
git log --pretty=format:{"commit":"%H"}

给我一个有效的 JSON 元素,例如:
{"commit":"20cafdecc9898113ac6215ae70cd7622dc2cae3b"}

在Windows下,我得到了一个无效的JSON元素,因为在某种程度上,Windows似乎会删除双引号元素,导致我得到了以下结果:
{commit:20cafdecc9898113ac6215ae70cd7622dc2cae3b}

你知道为什么会这样吗?或者我该如何修复,使它能在两个操作系统下正常工作呢? 谢谢!

1个回答

4
我假设你的Linux shell不是bash shell,因为我的Linux上的bash shell输出与Windows上相同 - 没有双引号。
对于大多数shell,双引号属于特殊字符,所以你需要通过“转义”或“引用”来保护它们。
git log --pretty=format:{\"commit\":\"%H\"}
git log --pretty='format:{"commit":"%H"}'

这适用于Linux上的Bash和Windows上的Bash。我没有在Windows上使用cmd进行测试。

谢谢A.H.,你可能是对的,我很抱歉在我的问题中提供了错误的信息。 我在Windows和Linux上运行的命令是带有你的单引号的 git log --pretty='format:{"commit":"%H"}' 但是在Windows中,在使用“cmd”启动的命令提示符中,我仍然获得没有双引号的日志... 我可以补充说明,在Windows下,我在git-bash中获得了“正确”的输出(带有双引号)。 - David
抱歉,我不知道 cmd 的引用规则。 - A.H.
没问题A.H.谢谢! 每个双引号都转义的命令似乎可以工作,但现在我有另一个问题。我在这里提问:(https://dev59.com/ECf_s4cB2Jgan1znMJwm#53044589) - David
1
@David 在Windows中,你必须转义引号符! git log --pretty='format:{"""commit""":"%H"}' -n 10 - Alex D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接