1. # 获取当前分支名
  2. git rev-parse --abbrev-ref HEAD
  3. git branch --show-current
  4. # 获取当前hash
  5. git rev-parse HEAD
  6. git rev-parse --short HEAD # 短的

在前端代码里面怎么获取当前操作的分支呢?

通过execa插件实现

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

使用

const execs = require(‘execa’);

const execa = require(‘execa’);

(async () => { const {stdout} = await execa(‘echo’, [‘unicorns’]); console.log(stdout); //=> ‘unicorns’ })();

/{ command: ‘echo unicorns’, escapedCommand: ‘echo unicorns’, exitCode: 0, stdout: ‘“unicorns”‘, stderr: ‘’, all: undefined, failed: false, timedOut: false, isCanceled: false, killed: false }/

stdout 表示执行命令的输出结果

执行脚本

execa.node(scriptPath, arguments?, options?)

  1. <a name="BRxXH"></a>
  2. ## 了解了execa的简单使用之后,就可以在代码里面获取当前操作的分支了
  3. 请看代码
  4. ```shell
  5. function getGitBranch() {
  6. const res = execa.commandSync('git rev-parse --abbrev-ref HEAD');
  7. return res.stdout;
  8. }
  9. const curbranch = getGitBranch()
  10. console.log('curbranch==', curbranch); // master
  11. # 以下是res输出
  12. curbranch== master
  13. {
  14. command: 'git rev-parse --abbrev-ref HEAD',
  15. escapedCommand: 'git rev-parse --abbrev-ref HEAD',
  16. exitCode: 0,
  17. stdout: 'master', # 命令执行结果输出
  18. stderr: '',
  19. failed: false,
  20. timedOut: false,
  21. isCanceled: false,
  22. killed: false
  23. }

网上找到一段代码也可以实现,但是具体在项目里面怎么使用还需要学习 先贴出来代码,实际上就是执行命令方式的区别

  1. function current_branch() {
  2. local folder="$(pwd)"
  3. [ -n "$1" ] && folder="$1"
  4. git -C "$folder" rev-parse --abbrev-ref HEAD | grep -v HEAD ||
  5. git -C "$folder" describe --exact-match HEAD ||
  6. git -C "$folder" rev-parse HEAD
  7. }

https://stackoverflow.com/questions/6245570/how-to-get-the-current-branch-name-in-git

脚本获取

  1. # .git/HEAD 文件内容
  2. ref: refs/heads/dev_0922

编写脚本:

  1. #!/bin/bash
  2. # 获取当前分支
  3. line=$(head -n +1 .git/HEAD)
  4. branch=${line##*/}
  5. echo $branch # dev_0922