Я относительно новичок в Python и пытаюсь использовать GitPython, чтобы вытащить изменения из удаленного репозитория в его локальный экземпляр, который уже был клонирован.Как использовать gitpython для запуска 'git pull alias_name master', где alias_name является настраиваемым псевдонимом?
Вне сценария, запуская '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 запустить «мерзавец тянуть ALIAS_NAME мастер» вместо «мерзавец тянуть -v происхождения» (который, как представляется, работать по умолчанию с помощью o.pull())?
Запуск 'empty_repo.create_head ('мастер', origin.refs.master) .set_tracking_branch (origin.refs.master) ' выдает ошибку: ' OSError: Ссылка на 'ссылки/глав/мастер' уже существует, указывая на u'05c3e4762486571918569557d043f5cb59857e06' , запрошенный «23553a1854cebdbe31322d0c1dee5a1aa7b03cf7'' бее ch поведет меня поверить, что местный мастер уже существует. Кроме того, запуск 'git branch' изнутри репо (через git в терминале, вне сценария) показывает, что я нахожусь на главном сервере. Я попробовал сначала сначала, как вы упомянули, но по-прежнему имеет ту же проблему. –