Я относительно новичок в 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())?