4

我正在编写一个节点 API 服务器,它需要向用户发送驻留在服务器上的 git 存储库中的本地分支列表。很多地方建议使用来自 NodeGit 的Repository#getReferenceNames,这就是我所做的:

exports.getBranches = function (req, res) {
    NodeGit.Repository.open(config.database).then(function(repo) {
        return repo.getReferenceNames(NodeGit.Reference.TYPE.LISTALL);
    }).then(function (arrayString) {
        res.status(200).json({message: "OK", data: arrayString});
    }).catch(function (err) {
        res.status(500).json({message: err, data: []});
    }).done(function () {
        console.log("finish");
    });
};

但是,此函数返回所有分支。有没有办法像命令行一样只获取本地分支git branch

4

1 回答 1

4

当然有!本地分支以 refs/heads 为前缀,而远程分支以 refs/remotes 为前缀,如下所示:

在此处输入图像描述

祝你好运!

编辑:

还有更好的方法。您可以在返回之前遍历返回的引用,并使用reference.isRemote() 清除远程。

于 2016-08-01T12:01:52.347 回答