javascript - 尝试在需要管道的子进程中运行 git 命令
问题描述
我需要在子进程中运行 git branch 命令,但我只想获取当前签出的分支。此命令在终端中工作:
git branch | grep \* | cut -d ' ' -f2
我有许多帖子试图做类似的事情,但我对 Unix 命令的理解不足以获得解决方案。
我已经在其他一些事情中尝试过这个:
spawn("git", ["branch | grep \* | cut -d ' ' -f2"], opts)
这就是我。从标准错误中获取:
git:'分支 | grep * | cut -d ' ' -f2' 不是 git 命令。请参阅“git --help”。
解决方案
Shell 命令有很多语法:a | b | c
并不意味着“运行命令a | b | c
”,而是“运行命令a
,用一堆胶水让它管道输出;运行命令b
,用一堆胶水让它读得更早管道输出作为其输入,并管道其输出;并运行命令c
,使用一堆胶水使其读取b
“管道输出”。
您可以在代码中复制所有这些胶水,但git branch | grep \* | cut -d ' ' -f2
首先这样做是错误的。相反,请使用以下两个命令之一:
git symbolic-ref --short HEAD
git rev-parse --abbrev-ref HEAD
这两个命令之间的区别在于,如果没有当前分支,第一个命令会失败(并显示错误消息)。第二个为这种情况打印。这种情况发生在“分离”时,即存储库没有当前分支。HEAD
HEAD
该git branch | grep \* | cut ...
序列成功,但针对这种分离的 HEAD 情况打印(HEAD
(HEAD
,并且没有用。
推荐阅读
- ios - UITableView 不显示 UITableViewCells
- r - 使用 adonis 进行 PERMANOVA 时如何获得系数输出?
- javascript - 复选框不会从 keydown 事件更改选中的值,但仍然能够聚焦并切换到下一个元素
- c# - 在 C# 中使用空数据类型初始化列表
- typescript - Make package available in Vue with Typescript
- r - 在 Rmarkdown 中的 bash 中设置环境变量
- c - 如何通过引用函数将全局结构指针作为调用传递?
- sql - COUNT 返回所有行的数量,即使是用 except 排除的行
- reactjs - 在这种情况下,上下文似乎是管理用户身份验证状态的最佳方式吗?
- spring - 设置 CompletionPolicy 以提交整个文件