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

2024-01-02

如果我运行这个命令:

$ git status

I get:

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, etc?


这不是 JSON,但是git status has a --porcelain option https://git-scm.com/docs/git-status#git-status---porcelainltversiongt:

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

See 瓷器格式 v1 和 v2 https://git-scm.com/docs/git-status#_porcelain_format_version_1:

版本 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 https://github.com/robertgzr/porcelain,它解析git status --porcelain=v2 --branch并为您的 shell 输出格式良好的字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 git 命令获取 JSON,例如 git status 的相关文章

  • Git 扩展 - 无法在 Windows 上推送到网络驱动器中的 git bare 存储库

    我正在 Windows 上学习 git 我已经安装了 Git 扩展 版本 2 47 3 并使用了它 我在我的 C 单元中创建了一个裸存储库 作为中央存储库 并在硬盘中的其他任何位置创建了个人存储库 我对硬盘中的这两个存储库进行提交 推送和拉
  • 是否可以在 git 存储库之外添加和提交文件?

    我们的文本文件分布在系统的各个角落 我们计划将这些文件中所做的所有修改添加到 git 存储库中 每次对这些文件进行修改都是由脚本进行的 因此 我们计划向该脚本添加新命令 以将文件添加到 git 存储库 但是 这些修改是同时进行的 我们可以为
  • 如何解决 VS Code 中变基拉取的合并冲突?

    当我做一个git pull rebase 并且我的提交中存在合并冲突 我得到冲突差异视图 解决所有冲突并暂存文件 然后呢 我可以打开终端并运行git rebase continue但是 VS Code 中不应该有一个按钮来完成变基吗 只需使
  • Git:压缩 master 上提交的最简单方法[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 git 将最后 X 次提交压缩在一起 https stackoverflow com questions 5189560 how can i squash my last x commits
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 如何关闭分支而不将其从 git 的历史记录中删除?

    我想提交并关闭其分支 而不将其从历史中删除 有了水银我会commit close branch then update转到上一个 然后继续工作 有了 git 我很困惑 没有与 Git 中关闭分支完全相同的方法 因为 Git 分支比 Merc
  • 执行 git Push 时出现“diff.renamelimit 变量”警告

    我将本地提交推送到远程 git 服务器并收到以下警告消息 remote warning only found copies from modified paths due to too many files remote warning y
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • 为别名命令添加“git help”?

    我已经实现了一个 Git 命令并使用 git 别名将其连接到 Git 但是有没有办法连接 Git 帮助 我在 Windows 上运行 如果我发出git help mycmd我收到一个弹出窗口 告诉我 Git 找不到 git mycmnd h
  • Git:以新名称签出旧版本的目录

    如何以新名称查看目录的先前版本 我一直都有一个目录foo在我的仓库中 我想创建一个目录foo old在我当前的工作树中 其内容是HEAD 2 foo 我同时需要两个版本 以确保它们给出相同的结果 测试这需要相当多的代码 并且需要同时提供两个
  • http.h:6:23: 致命错误:curl/curl.h:没有该文件/目录

    我在 CentOS 7 中下载 git 包 wget https www kernel org pub software scm git git 2 0 1 tar gz tar xzf git 2 0 1 tar gz 当我编译git时
  • Smartgit:自动插入提交消息

    有没有办法使用钩子脚本在 Smartgit 中自动插入提交消息 重击 如果用户提交了他的更改 我想预加载提交消息字段 我没有看到任何SmartGit配置 http www syntevo com smartgit documentation
  • 创建多个 git 分支的联合分支

    我希望能够在现有分支之上分层其他分支 并独立修改这些分支 这很有用 例如 允许将各个子项目的二进制文件统一到同一个项目中bin目录 一般来说 给定的文件仅存在于一层中 理想情况下 我想我会使用 unionfs 来完成此任务 但它必须以某种方
  • 在种子项目上构建时如何组织 git 存储库

    我正在基于从 github 克隆的种子项目 MEAN io 构建一个网站 如何将这些文件与我自己的文件分开 由于该种子提供了广泛的文件框架 因此我自己的文件分布在整个项目中 我希望能够从种子中提取更新 但不能将其与我添加的文件混合 我知道我
  • 在 python 中找不到 git 可执行文件

    我试图使用访问密钥克隆 git 存储库 但是当我尝试运行它时 它抛出一个异常 说找不到 git 可执行文件 但我已经安装了 git 并且 in it py 显示了正确的路径 C Program Files Git bin 我还安装了 git
  • Git - 使用过滤器分支删除带有空变更集的提交

    如何使用 git filter branch 删除没有变更集的提交 我使用以下方法重写了我的 git 历史记录 git filter branch tree filter rm r f my folder f HEAD 效果很好 但现在我有

随机推荐

  • 为什么我的输出是空白图像?

    这是我编写的一些用于显示图像幅度谱的代码 orig imdata imread Original Image png spec orig fft2 double orig imdata spec orig2 abs spec orig sp
  • 如何调整图像大小以适应不同的响应视图?

    我创建了一个网站nuxt js https nuxtjs org and 引导程序 https getbootstrap com 对于响应式视图 我需要创建不同的图像尺寸 Nuxt js 无法调整图像大小 你怎么做到这一点 现在我有了解决方
  • Soundcloud API SC.stream(曲目未加载)

    我从 soundcloud API 流式传输音乐 有时当我调用 SC stream 时 曲目不会流式传输 并且出现错误 GET http api soundcloud com tracks 80608808 stream client id
  • PHP 使用 POST 数据重定向

    我对这个话题做了一些研究 有一些专家说这不是possible https stackoverflow com questions 3045097 php redirect and send data via post 所以我想寻求替代解决方
  • 带参数启动程序

    如何编写一个非常简单的程序 使用命令行导航到用户的 Program Files 目录中的程序 然后启动 exe带参数 例如 C etc Program Files ProgramFolder Program exe C etc deskto
  • junit 的 Ant 目标

    我有 Suite java 文件 public class EshopServiceTestSuite extends TestSuite public static Test suite TestSuite suite new TestS
  • 使用 dask read_parquet 方法进行过滤会产生不需要的结果

    我正在尝试使用读取镶木地板文件dask read parquet方法和filters夸格 但有时它不会根据给定条件进行过滤 例子 创建并保存数据框dates column import pandas as pd import numpy a
  • Node.js 并发

    我是 Node js 的新手 我正在测试 socket io 的实时消息传递 我喜欢它并且想使用它 我有个问题 Node js 服务器可以运行多少并发 我们的程序大概会有100个并发 所以 我对此很担心 我发现了另一个实时消息服务器 APE
  • 从 Spring Web MVC 控制器返回带有查询参数的视图字符串?

    这是我想要的效果 但我无法弄清楚语法 RequestMapping method RequestMethod GET params param1 param2 produces text html public String createF
  • 错误 1111 (HY000):组功能使用无效

    给定一个具有以下属性的人员表 ec 姓名 代码 出生日期 工资 列出收入高于平均工资的员工 我的解决方案 select from staff where salary gt avg salary 这有什么问题吗 聚合可能不会出现在WHERE
  • 我可以从正则表达式创建列表吗?

    我正在制作一个爬虫 用户可以指定正则表达式字符串来下载数据 当用户输入表单为 http xxx abc x z image 9 10 11 png 我想下载这些 http xxx abcx image9 png http xxx abcy
  • CocoaPods 安装/搜索 pod 时出错

    我正在尝试在我的项目中使用一些 Pod 但终端结果是 pod install Analyzing dependencies Unable to find a specification for Mantle 因此 我尝试搜索该 Pod 或其
  • React Native:未找到哈希字符串“android-28”的目标

    当尝试从命令行构建 React Native android 应用程序时 我遇到了以下问题 它位于 Ubuntu Server 上 因此没有 Android Studio GUI 我有android 28安装在错误指出的文件夹中 ANDRO
  • 未初始化的常量 Active Scaffold Rails 2.3.5

    我将 Rails 应用程序从 2 0 2 更新到 2 3 5 我使用主动支架作为管理部分 我没有更改代码 但更新出现了问题 我有一个控制器 admin user controller 来管理用户 这是控制器的代码 class Admin U
  • XML 文件的长度

    我有一个大小为 31 GB 的 XML 文件 我需要找到该文件中的总行数 我知道命令wc l会给我同样的 但是执行此操作花费的时间太长 有没有更快的机制来查找大文件中的行数 31 gigs 是一个非常大的文本文件 我打赌它会压缩到大约 1
  • 输入数字字段时移动浏览器上“输入/下一个”键的行为

    我这里有一行代码 不涉及表单
  • 如何在 OpenOffice 中进行简单的邮件合并

    我需要使用 C VBScript VB Net 或 C 通过 OLE 或本机 API 在 OpenOffice 中进行简单的邮件合并 有什么好的例子吗 我还没有想出一个令我非常满意的解决方案 但这里有一些注意事项 问 什么是用于邮件合并的
  • 将列表转换为 Pandas Dataframe 列

    我需要将列表转换为单列 pandas 数据框 当前列表 len 3 Thanks You Its fine no problem Are you sure 所需的 Pandas DF 形状 3 0 Thank You 1 Its fine
  • statsmodels ARIMA 结果与原始数据的比较

    我有一个包含季节性成分的时间序列 我安装了 statsmodels ARIMA model tsa arima model ARIMA data 8 1 0 fit 例如 现在 我了解到 ARIMA 与我的数据存在差异 我如何比较结果 pr
  • 从 git 命令获取 JSON,例如 git status

    如果我运行这个命令 git status I get On branch master Your branch is up to date with origin master nothing to commit working direc