美文网首页
js获取git分支信息

js获取git分支信息

作者: 甜点cc | 来源:发表于2022-08-03 15:44 被阅读0次

    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、脚本获取

    我在掘金 git编写脚本 组合 commit-msg 一文中使用脚本获取分支信息,感兴趣可以看一下。

    1. 可以看一下项目中 .git/HEAD 文件中的内容

    HEAD指向最新放入仓库的版本

    ref: refs/heads/dev_0922
    
    1. 编写脚本
    #!/bin/bash
    
    # 获取当前分支
    line=$(head -n +1 .git/HEAD)
    branch=${line##*/}
    echo $branch # dev_0922
    

    🎈🎈🎈

    🌹 关注我,你会发现一个踏实努力的宝藏前端😊,让我们一起学习,共同成长吧。

    🎉 喜欢的小伙伴记得点赞关注收藏哟,回看不迷路 😉

    ✨ 欢迎大家转发、评论交流

    🎁 蟹蟹😊

    相关文章

      网友评论

          本文标题:js获取git分支信息

          本文链接:https://www.haomeiwen.com/subject/azzswrtx.html