Как отправить в удаленное репо с помощью GitPython

Мне нужно клонировать набор проектов из одного репозитория и автоматически отправлять его в удаленный репозиторий. Поэтому я использую Python и специальный модуль GitPython. До сих пор я могу клонировать проект с помощью gitpython следующим образом:

def main():
  Repo.clone_from(cloneUrl, localRepoPath)
  # Missing: Push the cloned repo to a remote repo.

Как я могу использовать GitPython для отправки клонированного репо в удаленное репо?


person Oni1    schedule 02.01.2017    source источник


Ответы (2)


все это описано в документации:

repo = Repo.clone_from(cloneUrl, localRepopath)
remote = repo.create_remote(remote_name, url=another_url)
remote.push(refspec='{}:{}'.format(local_branch, remote_branch))

см. также API push reference. Вы можете избежать настройки refspec, если вы установите ветку отслеживания для удаленного устройства, на которое вы хотите нажать.

person zmo    schedule 02.01.2017
comment
Это похоже на subprocess.check_call(['git', 'remote', 'set-url', 'remote', url]. Вы можете не указывать url=, аргумент kw не требуется. - person Timo; 18.07.2021
comment
Это также похоже на открытие и запись файла .git/config и запись содержимого в него. Здесь ОП спрашивает конкретно о GitPython ☺. Тем не менее, это хороший момент для url=, даже несмотря на то, что сама документация использует ключевое слово в нескольких местах. - person zmo; 20.07.2021

Это должно работать так

r = Repo.clone_from(cloneUrl, localRepoPath)
r.remotes.origin.push()

при условии, что ветка отслеживания уже настроена.

В противном случае вы бы установили refspec:

r.remotes.origin.push(refspec='master:master')
person Byron    schedule 02.01.2017
comment
Это решение подталкивает его к происхождению, но я хотел подтолкнуть его к новому пульту. - person Oni1; 03.01.2017
comment
Не помогает, так как пульт тот же. - person Timo; 18.07.2021