Как я могу выполнить ребаз с 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)