Как я могу выполнить ребаз с pygit2?

Этот вопрос касается того, как выполнить слияние с pygit2, но, насколько я понимаю, это приведет к новому коммиту. Есть ли способ выполнить перебазирование, которое не приведет к новой фиксации и просто переместит ссылку на ветвь, чтобы соответствовать последней из данного удаленного пульта?

1 ответ

Решение

Вы можете перемотать вперед с помощью Reference.set_target ().

Пример (перемотка вперед master в origin/master, предполагая, что скрипт запускается из выписанного master ветка в чистом виде):

repo.remotes['origin'].fetch()
origin_master = repo.lookup_branch('origin/master', pygit2.GIT_BRANCH_REMOTE)
master = repo.lookup_branch('master')
master.set_target(origin_master.target)

# Fast-forwarding with set_target() leaves the index and the working tree
# in their old state. That's why we need to checkout() and reset()
repo.checkout('refs/heads/master')
repo.reset(master.target, pygit2.GIT_RESET_HARD)
Другие вопросы по тегам