способ объединить все коммиты в один коммит используя libgit2

Я хочу объединить все коммиты в один для удаления истории. Я знаю, что это возможно в командной строке Git, но я пока не нашел пути в libgit2.

Я использую libgit2 в последней версии, скомпилированной мной в C ++.

Что ты предлагаешь?

1

Решение

Есть несколько способов подумать об этом. В командной строке вы можете сделать что-то вроде этого:

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(...);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]