使用node.js获取当前git分支

eulz3vhy  于 2023-06-20  发布在  Git
关注(0)|答案(4)|浏览(218)

如何在没有外部库的情况下使用node.js获取当前的git分支?我需要能够获取当前分支名称,以便在节点文件中执行另一个函数。

更新部分工作代码

我可以用这个来获取分支名称,但是如果stdout匹配给定的字符串,似乎无法注销消息。

const { exec } = require('child_process');
exec('git rev-parse --abbrev-ref HEAD', (err, stdout, stderr) => {
    if (stdout === 'name-of-branch') {
        console.log(this is the correct branch);
    }
});
mnowg1ta

mnowg1ta1#

请试试这个作品

const { exec } = require('child_process');
exec('git rev-parse --abbrev-ref HEAD', (err, stdout, stderr) => {
    if (err) {
        // handle your error
    }

    if (typeof stdout === 'string' && (stdout.trim() === 'master')) {
      console.log(`The branch is master`);
      // Call your function here conditionally as per branch
    }
});

接收输出为

$: node test.js 
The branch is master
zvokhttg

zvokhttg2#

这应该可以做到:

const { exec } = require('child_process');
exec('git branch --show-current', (err, stdout, stderr) => {
    if (err) {
        // handle your error
    }
});

stdout变量将包含您的分支名称。你需要安装git才能工作。

fhg3lkii

fhg3lkii3#

只是添加到@Aayush Mall的答案作为ES6模块,这样你就可以在你的项目中的任何地方获取当前分支,并按照你的喜好使用。

import { exec } from 'child_process';

const getBranch = () => new Promise((resolve, reject) => {
    return exec('git rev-parse --abbrev-ref HEAD', (err, stdout, stderr) => {
        if (err)
            reject(`getBranch Error: ${err}`);
        else if (typeof stdout === 'string')
            resolve(stdout.trim());
    });
});

export { getBranch }

// --- --- Another File / Module --- ---

import { getBranch } from './moduleLocation.mjs'

const someAsyncFunction = async () => {
  console.log(await getBranch()); 
}

someAsyncFunction();
1cosmwyk

1cosmwyk4#

如果,只是如果,你在你的项目的这个策略中是无关紧要的,你可以从字符串中删除外部空格(trim方法),并在条件之前或内部将其转换为大写或小写(toUpperCase或toLowerCase方法)。比如这样:

const stA = ' oOo  ';
 const stB = 'OOO';
 if(stA.trim().toUpperCase() === stB.trim().toUpperCase()) {
    return true;
 } else {
    return false;
 }

或者你可以按照@jason-warner说的去做

相关问题