GitPython ничего не появляется в рабочей копии после извлечения

Я новичок в PythonGit, и у меня проблемы с вытягиванием и нажатием. Я создал локально голое репо и отправил в него первоначальную фиксацию. После этого я попытался создать новое пользовательское репо с помощью PythonGit, получить его и извлечь из него. У меня нет проблем с инициализацией репо, однако я ничего не могу получить из удаленного/голого репо. Мой код:

import git

repo = git.Repo.init('.')
origin = repo.create_remote('origin', '/home/paweber/git/my-repo.git')
origin.fetch()            
repo.create_head('master', origin.refs.master).set_tracking_branch(origin.refs.master)
origin.pull()

В консоли ipython для извлечения и извлечения я получаю:

In [5]: origin.fetch()
Out[5]: [<git.remote.FetchInfo at 0x7f4a4d6ee630>]

для получения и

In [6]: origin.pull()
Out[6]: [<git.remote.FetchInfo at 0x7f4a4d6e6ee8>]

для тяги. После действия вытягивания вообще ничего не вытягивается, и репо все еще пусто, но существует. Что я делаю неправильно?


person PaulWebbster    schedule 29.01.2015    source источник
comment
Я предполагаю, что empty_repo должен быть репозиторием, который вы инициализировали путем. В противном случае он может не знать, где хранить ваши файлы.   -  person phobic    schedule 29.01.2015
comment
Извините, просто ошибка в примере кода, теперь правильно   -  person PaulWebbster    schedule 29.01.2015
comment
Я могу воспроизвести ваш результат. На самом деле файлы просто удаляются. Вы можете проверить или сбросить --hard свой репозиторий. Я не знаю, почему это происходит, хотя я предполагаю, что это как-то связано со строкой create_head вашего кода.   -  person phobic    schedule 29.01.2015


Ответы (2)


pull() ничего не делает, так как master уже находится в целевом коммите, на который указывает origin/master.

Этот код будет работать так, как ожидалось:

import git

repo = git.Repo.init('.')
origin = repo.create_remote('origin', '/home/paweber/git/my-repo.git')
origin.fetch()
# the HEAD ref usually points to master, which is 'yet to be born'            
repo.head.ref.set_tracking_branch(origin.refs.master)
origin.pull()
person Byron    schedule 02.02.2015

Я не знаю, как правильно решить эту проблему, но единственная идея состоит в том, чтобы, как говорят фобы, сбросить жесткое репо после create_head.

import git

repo = git.Repo.init('.')
origin = repo.create_remote('origin', '/home/paweber/git/my-repo.git')
origin.fetch()            
repo.create_head('master', origin.refs.master).set_tracking_branch(origin.refs.master)
origin.pull()
repo.head.reset('--hard')

После этого все дальнейшие тяги должны работать правильно.

person PaulWebbster    schedule 30.01.2015