从git命令获取JSON,例如git status

时间:2018-07-08 04:43:14

标签: git git-status

如果我运行此命令:

$ git status

我得到:

On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

这很难解析。

但是真正好的是--json输出,在另一个世界里,我很想看看:

 $ git status --json

得到这个:

   {
    "currentBranch": "master",
    "remoteTrackingBranch": "origin/master",
    "isUpToDateWithRemote": true,
    "workingDirectoryClean": true
   }

NPM生态系统中是否有一些工具可以将Git输出解析为JSON?解析来自git status等的输出的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

这不是JSON,而是git status has a --porcelain option

  

以易于解析的格式为脚本提供输出。这类似于简短的输出,但是无论用户配置如何,在所有Git版本中都将保持稳定。

请参见porcelain format v1 and v2

  

版本2格式添加了有关工作树和已更改项目状态的更多详细信息。版本2还定义了一组易于解析的可选标头。

     

标题行以“#”开头,​​并根据特定的命令行参数而添加。解析器应忽略无法识别的标头。

vonc@voncvb C:\test
> git status --porcelain=v2 --branch
# branch.oid a4a9ae9616e5f1da136a3ff717e722d055ca9aa7
# branch.head master
# branch.upstream origin/master
1 .M N... 100644 100644 100644 67f7a2a439ffb9dd18dd65bb6fd296f8c16c55b3 67f7a2a439ffb9dd18dd65bb6fd296f8c16c55b3 test/file1.txt
1 .M N... 100644 100644 100644 d59cac0c8acf674ba3316944451dcbec3e6ec3d7 d59cac0c8acf674ba3316944451dcbec3e6ec3d7 test/file2.txt

以示例robertgzr/porcelain为例,该示例分析git status --porcelain=v2 --branch并为您的shell输出格式正确的字符串。