2016-07-25 11 views
0

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

+0

, который, строго говоря, перебазироваться. Это ускоренное слияние. –

+0

@WayneWerner да, вы правы. Мне нужно будет поиграть с pygit2, чтобы применить изменения в текущей ветке * поверх * последнего состояния из той же ветви на удаленном компьютере. – Piotrek

ответ

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) 
+0

будет [repo.lookup_branch ('origin/branch1', GIT_BRANCH_REMOTE)] (http://www.pygit2.org/references.html#pygit2.Repository.lookup_branch) на самом деле извлекает последнее состояние из удаленного («origin» в этом дело)? * edit *: markdown – Piotrek

+0

@Piotrek Нет, 'lookup_branch()' не извлекает. Вы должны 'fetch()' явно. См. Обновленный ответ. – Leon

 Смежные вопросы

  • Нет связанных вопросов^_^