Как я могу использовать gitpython для запуска "git pull alias_name master", где alias_name - это пользовательский псевдоним?

Я относительно новичок в Python и пытаюсь использовать GitPython, чтобы перенести изменения из удаленного репозитория в его локальный аналог, который уже был клонирован.

Вне скрипта, запуск git pull alias_name master (где alias_name - произвольный псевдоним) непосредственно из терминала работает каждый раз. Я проверяю, что локальное репо действительно обновлено, сравнивая коммит SHA между локальным экземпляром репо и удаленным

cd path/to/local/instance/of/repo
git pull alias_name master
git log --pretty=format:'%h' -n 1

Если то, что возвращено выше, совпадает с коммитом SHA для веб-интерфейса для удаленного репо, я знаю, что локальное репо сняло последние изменения. Каждый раз, когда я запускаю это из терминала, SHA совпадают, и я вижу, как отладчик сбрасывает последние изменения.

При выполнении следующего сценария выполняется без каких-либо ошибок, но локальное хранилище не обновляется, потому что SHA не совпадают после выполнения сценария.

Вот что у меня есть:

import git
from git import Repo

repo= git.Repo(path/to/local/instance/of/repo)
o = repo.remotes.origin
repo.heads.master.set_tracking_branch(o.refs.master)
repo.heads.master.checkout()
o.pull()
o.push()

Я по сути задаюсь вопросом, есть ли способ сказать gitpython, что нужно запускать "git pull alias_name master" вместо "git pull -v origin" (который, по-видимому, запускается по умолчанию с o.pull())?

1 ответ

Как уже упоминалось в " GitPython, в рабочей копии после извлечения ничего не появляется", если вы установили master уже в origin/master, тяга не может сделать много..

Попробуйте в вашем случае получить сначала.

o.fetch()
repo.head.ref.set_tracking_branch(o.refs.master)
o.pull() 

Или, как показано в официальном руководстве, убедитесь, что локальный мастер существует, создайте его, если нет:

empty_repo.create_head('master', origin.refs.master).set_tracking_branch(origin.refs.master).checkout()
Другие вопросы по тегам