微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nodegit 将提交重新绑定到其父项上

如何解决Nodegit 将提交重新绑定到其父项上

我正在做一些非常愚蠢和具体的事情,但我需要一些帮助。

所以,我有命令

git rebase commitID --onto commitID^

我基本上是用它来从 git 历史记录中删除提交。这在终端中效果很好,但我需要找到一种方法来使用 NodeGit(LibGit 的包装器)以编程方式执行此操作。

在 repo RebaseTest 我有这样的历史

MASTER BRANCH a -> b -> c -> d -> e (HEAD)

如果我想删除b,我可以做

git rebase b --onto b^

所以我有

a -> c -> d -> e

我正在尝试使用此示例测试代码来执行此操作,但是无论我如何尝试执行 rebase,我最终都会得到一个历史记录

可以在此处找到初始化 rebase 的文档: https://www.nodegit.org/api/rebase/

const repo = await Git.Repository.open('rebaseTest');
const branch = await repo.getBranchCommit('master');
const head = await Git.AnnotatedCommit.lookup(repo,branch.id());
const commit = await Git.AnnotatedCommit.lookup(repo,'b');
const parent = await Git.AnnotatedCommit.lookup(repo,await (await commit.parent(0)).sha());
// THESE COMBINATIONS DO NOT WORK (N is null) hct ccp cpp hpc cNp cpN pcN pNc
const rebase = await Git.Rebase.init(repo,head,commit,parent);

使用不同的参数组合运行这段代码给了我一个看起来像这样的历史,

a -> b -> c (head)

完全删除所有其余的提交。也许 RebaSEOptions 会很有用,但我不确定如何。

我该如何在这函数中使用那个命令?如果不可能,我想我可以通过使用 exec 来只运行 bash 命令来做到这一点,但如果我可以避免它,我真的宁愿不这样做。是的,我理解这个古怪问题的荒谬和琐碎。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。