3

第一次使用NodeGit并遇到重置功能的问题。

我正在尝试重置已克隆到当前源/主 HEAD 的文件夹。

即使我给它一个目标,它说它仍然是必需的:

Error: Object target is required.

当前代码:

var Reset = nodegit.Reset;
var templateDir = this.templatePath('/folder');

nodegit.Repository.open(templateDir)
    .then(function(repo) {
        repository = repo;

        Reset.reset(repository, templateDir, Reset.TYPE.HARD, {
            remoteCallbacks: {
                credentials: function(url, userName) {
                    return nodegit.Cred.sshKeyNew(userName, sshPublicKey, sshPrivateKey, "");
                }
            }
        })
        .done(function(repo) {
            console.log("reset done");
        });
    });

templateDir 是使用 Yeoman 的 templatePath 的文件夹的完整路径。

想知道是否有人可以让我深入了解我做错了什么或遗漏了什么。我在他们的示例文件夹中没有看到这个示例。

我的预期最终结果将等于在终端中运行它:

git reset --hard origin/master
4

1 回答 1

1

例如,您可以检查执行硬重置的测试用例

要点是templateDir您要重置的提交对象。remoteCallbacks除非您想进行获取或某种远程操作,否则您实际上并不需要。

尝试这个:

var Reset = nodegit.Reset;
var templateDir = this.templatePath('/folder');
var repository = repo;

nodegit.Repository.open(templateDir)
.then(function(repo) {
    repository = repo;

    return repository.fetch('origin');
})
.then(function() {
    return repository.getBranchCommit('origin/HEAD');
})
.then(function(originHeadCommit) {
    return Reset.reset(repository, originHeadCommit, Reset.TYPE.HARD);
})
.done(function(repo) {
    console.log("reset done");
});
于 2015-03-26T16:59:50.360 回答