使用 libgit2 将所有提交组合成单个提交的方法

way to combine all commits into a single commit using libgit2

我想将所有提交合并为一个以删除历史记录。我知道在 Git 命令行中是可能的,但我还没有在 libgit2 中找到方法。

我使用的是最新版本的 libgit2,由我用 C++ 编译。

你有什么建议?

有几种方法可以考虑这个问题。在命令行上,您可以执行如下操作:

git reset --soft <some-ancestor-commit-ish>
git commit -m "This commit combines some history."

软重置将当前分支移动到指向某个祖先提交而不更改工作目录和索引。所以现在你已经准备好了这些提交引入的所有更改,你可以将它们作为新的组合提交提交。这两个步骤可以直接转换为 libgit2,例如:

git_reset(repo, ancestor_commit, GIT_RESET_SOFT, NULL);
git_commit_create(...);