首页 > 解决方案 > 使用 NodeGit 签出特定的提交

问题描述

我有一个 NodeGit 存储库对象,repo和一个sha代表提交 id 的字符串代码commit_id。如何使用 NodeGit 执行此提交的 git checkout,它的作用与命令相同git checkout $commit_id

到目前为止,我已经尝试Reference使用提交 ID 创建一个,然后使用checkoutRef它来检查参考。但是,存储库没有改变,我得到了错误Error: the given reference name '<my commit id>' is not valid

NodeGit.Reference.lookup(repo, commit_id, (reference) => {
    repo.checkoutRef(reference)
});

谢谢您的帮助。

标签: node.jsgitnodegit

解决方案


到目前为止,我发现的唯一解决方案是:

const commit = await repo.getCommit(commit_id);
await nodegit.Reset.reset(repo, commit, nodegit.Reset.TYPE.HARD);

但它太慢了......尤其是对于大型存储库!


推荐阅读