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


1

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

Источник
  •  21
  •  1
  • 12 мар 2020 2020-03-12 08:25:59

1 ответ

0

Как упоминалось в " GitPython ничего не появляется в рабочей копии после pull ", если вы установите 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()
  • 12 мар 2020 2020-03-12 08:26:00