Как сделать git-слияние с помощью pygit2

Я пытаюсь слить ветку в мастер:

repo = pygit2.Repository("/path/to/repo/")
branch = repo.lookup_branch("upstream/branch", pygit2.GIT_BRANCH_REMOTE)
oid = branch.target
merge_result = repo.merge(oid)

И merge_result содержит ff oid (как в документации), и репо не изменилось.

Что мне делать дальше, чтобы изменить хранилище?

1 ответ

Решение

Функция слияния выполняет слияние (или в этом случае говорит, что вы можете его пропустить), но решать вам (или пользователю инструмента), хотите ли вы переместить текущую ветку на новую позицию.

Это то же самое, что и в любой другой момент, когда вы хотите изменить ссылку. В этом случае вы хотите попасть в текущую ветку, что вы делаете через разрешение HEAD на несимвольную ссылку и установление ее цели.

repo.lookup_reference('HEAD').resolve().target = merge_result.fastforward_oid
Другие вопросы по тегам