git log --pretty=format windows 奇怪的行为

Dav*_*vid 5 git json cmd git-log

我将问题简化到最低限度。Linux下的git命令如下:

git log --pretty=format:{"commit":"%H"}
Run Code Online (Sandbox Code Playgroud)

给我一个有效的 json 元素,比如:

{"commit":"20cafdecc9898113ac6215ae70cd7622dc2cae3b"}
Run Code Online (Sandbox Code Playgroud)

在 Windows 下,我获得了一个无效的 json 元素,因为在某种程度上,Windows 似乎删除了双引号元素,我获得:

{commit:20cafdecc9898113ac6215ae70cd7622dc2cae3b}
Run Code Online (Sandbox Code Playgroud)

您知道为什么吗?或者我该如何修复它,使其在两个操作系统下都可以工作?谢谢你!

A.H*_*.H. 4

我假设您在 Linux 上的 shell 不是bashshell,因为bashLinux 上的 shell 提供了与 Windows 上相同的输出 - 没有双引号。

双引号对于大多数 shell 来说都是特殊字符 - 因此您必须通过“转义”或“引用”来保护它们。

git log --pretty=format:{\"commit\":\"%H\"}
git log --pretty='format:{"commit":"%H"}'
Run Code Online (Sandbox Code Playgroud)

这适用于 Linux 上的 bash 和 Windows 上的 bash。我还没有cmd在 Windows 上测试过它。