Я хочу объединить все коммиты в один для удаления истории. Я знаю, что это возможно в командной строке 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(...);
Других решений пока нет …