从 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 从 Netbeans 推送到 Gerrit

    我在将提交从 Netbeans 7 4 在 Linux 上 推送到 Gerrit 进行审查时遇到问题 我的git配置 core repositoryformatversion 0 filemode true logallrefupdates
  • Git 和重定向

    我注意到 当 git html 项目页面如下所示 https github com fruux sabre dav 被克隆 以这种方式 git clone https github com fruux sabre dav 实际生成的远程 U
  • Mac 到 EC2 - 源代码控制三角问题 - git?同步?啥?

    我有一个日常 EC2 实例 事实上 请注意那些更改IP每次重新启动它们时 都会出现另一个问题 实例上有一个文件夹 我在文件夹 mysql express 等 中有一个简单的 比如说 节点项目 比方说 这是一个网站 那么在我的 Mac 上进行
  • 无法在 git 上获取 Http 工作

    我在拇指驱动器上使用 gitbash 作为 git 我的防火墙阻止了我 并且想设置我的 git 以进行 http 访问 我使用 github 并且已经看到了有关如何执行此操作的各种信息 但我还不够了解 无法让它为我自己工作 我在 php i
  • 如何正确设置 Azure DevOps 和 GitHub 之间的双向同步

    我想通过执行以下操作在 Azure DevOps 和 GitHub 之间创建双向同步 使用 CI 触发器创建 Azure DevOps 管道 将更改从 Azure DevOps 存储库推送到 GitHub 中的分支 创建第二个管道 用于侦听
  • git 标签也会被推送吗?

    自从我创建了我的存储库以来 我所使用的标签似乎 创建不会被推送到存储库 当我做git tag于 本地目录所有标签都存在 但是当我登录到 远程存储库并执行git tag 仅出现前几个 可能是什么问题 你可以这样做 git push tags
  • 如何更新我的裸存储库?

    我创建了一个裸存储库来发布我的存储库 但我不知道如何使用主存储库的当前状态更新裸存储库 如果您想复制主存储库中的所有对象 请在主存储库中执行此操作 git push all
  • git 索引到底包含什么?

    Git 索引到底包含哪些内容 可以使用什么命令查看索引内容 感谢您的所有回答 我知道索引充当暂存区 提交的内容是在索引中而不是工作树中 我只是好奇索引对象由什么组成 我猜它可能是文件名 目录名 SHA 1 对的列表 也许是一种虚拟树 在 G
  • 获取 git 存储库中每个文件的提交计数

    我正在寻找一种方法来查看有关 git 存储库中每个文件更改频率的统计信息 基本上 文件提交的频率实际上与以前的版本不同 此外 有没有办法获取文件上次更改的日期 我是一个 git 新手 还没有发现任何关于此的信息 任何帮助将不胜感激 这里有两
  • 为什么 --first-parent 不是 git show 的默认值?

    我确信这个问题将作为基于意见的问题而结束 但没有其他地方所以问它 所以这里 我正在尝试查看我的分支的历史记录 其中包括合并提交 特别是更改的内容 我在这里找到了一篇非常有用的帖子git 显示合并提交 https stackoverflow
  • git svn 克隆特定分支并合并

    我希望将我的代码库从 svn 迁移到 git 我的 svn 仓库中有太多分支 我只想克隆几个分支并将它们合并在一起并将其推送到 git 我想避免克隆所有分支 因为这需要很长时间 我该如何实现这一目标 完成后 我想定期从这些 svn 分支获取
  • 本地 git 存储库强制从远程 git 存储库更新。 (胖客户端部署)

    Update 我认为这与 Windows git 客户端 msysgit 的问题有关 抱歉打扰你们了 我正在寻找一种方法来使多个客户端框与远程 git 存储库保持同步 强制从远程存储库进行更新并放弃客户端上可能已更改的任何内容 我遇到的问题
  • 我如何知道哪些文件已在 git 中标记为“假设未更改”

    这个答案 https stackoverflow com a 936325 554807向您展示如何将 git 管理的文件标记为 我不希望从该文件的存储库进行更改 IE 拥有该文件的您自己的本地未跟踪版本 即使它仍然受到 git 的修订控制
  • 克隆/推送 Git Repos 时出错 443:访问错误,但未使用代理

    当使用 git 远程存储库进行这些操作克隆 推送时 我遇到了非常奇怪的问题 假设我正在尝试将更改推送到远程存储库 git push origin master 然后我会得到这个错误 致命 无法访问 Remote Repo 无法连接到 git
  • Git在Windows中的克隆比在Linux中慢得多

    我一直在追寻 Windows 上 github 克隆速度极慢的问题 Linux kali 没有这个问题 我的下行连接速度为 100 40 megabit s 我可以获得接近 8mb s 的下载速度 没有问题 我已将电脑直接插入互联网插座 无
  • Git 中的错误 - 致命:“/Users/username/Downloads/folder_name”位于存储库之外

    当我向 git 添加新项目时 出现此错误 Error fatal Users username Downloads folder name is outside repository 如何摆脱这个错误 我想 我需要给出当前的工作目录 但是
  • 尝试编译 git 但在 linux 中找不到 libcurl

    我想编译支持 http https 的 git 我有 ls usr include curl curlbuild h curl h curlrules h curlver h easy h mprintf h multi h stdchea
  • 合并两个github帐户

    假设我有两个 github 帐户xyz 邮件 ID email protected cdn cgi l email protection and abc email protected cdn cgi l email protection
  • 撤消 git pull,如何将存储库恢复到旧状态

    有什么方法可以恢复或撤消 git pull 以便我的源 存储库将恢复到执行 git pull 之前的旧状态 我想这样做是因为它合并了一些我不想这样做的文件 但只合并了其他剩余的文件 那么 我想找回这些文件 可以吗 编辑 我想撤消 git m
  • 是否有一个 Git 命令可以在推送到 master 之前添加通知/警告

    我有一个用例 其他人依赖我在从 master 下拉时没有启用标志 但我需要在本地处理存储库时启用它 我希望 希望 Git 有一种方法可以添加通知或警告 当请求推送到 master 时会触发 作为某种 提醒 所以也许我的工作流程可能是这样的

随机推荐

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

    这是我编写的一些用于显示图像幅度谱的代码 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