js获取项目git分支信息

简介: js获取项目git分支信息

1、git bash 获取分支信息


# 获取当前分支名
git rev-parse --abbrev-ref HEAD
git branch --show-current
# 获取当前hash
git rev-parse HEAD
git rev-parse --short HEAD  # 短的

上面的代码是通过git命令获取的分支信息,怎么可以在项目代码里面获取分支信息呢?请看下文👇


2、JavaScript 通过 execa件获取项目分支信息


execa具备如下特点:


  • Promise接口
  • 从输出中删除最后的换行符,这样您就不必执行stdout.trim()
  • 支持跨平台的shebang二进制文件
  • 改进Windows支持。
  • 更高的最大缓冲区。100mb而不是200kb。
  • 按名称执行本地安装的二进制文件。
  • 在父进程终止时清除派生的进程。
  • 从 stdout和stderr获得交错输出,类似于在终端上打印的输出。(异步)
  • 可以指定文件和参数作为一个单一的字符串没有外壳
  • 更具描述性的错误。


  1. 安装 execa


npm install execa -S


  1. 简单使用 execa


(async () => {
    const {stdout} = await execa('echo', ['unicorns']);
    console.log(stdout);
    //=> 'unicorns'
})();
// stdout 表示执行命令的输出结果
/*{
  command: 'echo unicorns',
  escapedCommand: 'echo unicorns',
  exitCode: 0,
  stdout: '"unicorns"',
  stderr: '',
  all: undefined,
  failed: false,
  timedOut: false,
  isCanceled: false,
  killed: false
}*/

execa还可以执行脚本命令,并输出结果,下面看一下如何在代码里面获取当前操作的分支👇


  1. 实际项目中的代码


function getGitBranch() {
  const res = execa.commandSync('git rev-parse --abbrev-ref HEAD');
  return res.stdout;
}
const curbranch = getGitBranch()
console.log('curbranch==', curbranch); // master
// 以下是res输出
curbranch== master
{
  command: 'git rev-parse --abbrev-ref HEAD',
  escapedCommand: 'git rev-parse --abbrev-ref HEAD',
  exitCode: 0,
  stdout: 'master', # 命令执行结果输出
  stderr: '',
  failed: false,
  timedOut: false,
  isCanceled: false,
  killed: false
}

下面说一下脚本获取方式


3、脚本获取



  1. 可以看一下项目中 .git/HEAD 文件中的内容
    HEAD指向最新放入仓库的版本
ref: refs/heads/dev_0922
  1. 编写脚本
#!/bin/bash
# 获取当前分支
line=$(head -n +1 .git/HEAD)
branch=${line##*/}
echo $branch # dev_0922


目录
相关文章
|
存储 安全 开发工具
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
1183 4
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
|
开发工具 git
图解Git——分支的新建与合并《Pro Git》
在Git开发中,新建与合并分支是常见的操作。以实际开发为例:为实现新需求创建分支`iss53`进行开发;遇紧急Bug时,切换至线上分支创建`hotfix`修复并合并回线上分支,再切换回`iss53`继续工作。完成`iss53`后,切换到`master`合并。若出现冲突,使用`git status`查看,手动编辑解决冲突后标记为已解决并提交。图形化工具如`git mergetool`也可辅助解决冲突。
514 9
|
开发工具 git 开发者
图解Git——分支简介《Pro Git》
Git 分支是其核心特性之一,允许开发者从主开发线分离工作,避免干扰主线。传统版本控制系统创建分支效率低,而Git的分支创建和切换非常轻量高效。
907 9
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
2838 15
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
822 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
Shell 网络安全 开发工具
项目快速导入git
本文介绍了如何在本地初始化 Git 仓库并将代码提交到远程仓库(如 GitHub 或 Gitee)的基本流程。内容包括安装 Git、创建仓库、添加文件、提交更改以及推送代码到远程仓库的详细步骤,适合初学者快速掌握 Git 的基本使用方法。
2895 1
|
开发工具 git 开发者
vscode+git解决远程分支合并冲突
通过这些详细步骤,您可以掌握如何使用VSCode和Git高效地解决远程分支合并冲突,提高开发效率和代码质量。希望这些内容对您的学习和工作有所帮助。
3747 86
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
630 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
798 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
1266 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战