拉后,GitPython没有出现在工作副本中

时间:2015-01-29 07:41:03

标签: python git gitpython

我是PythonGit的新手,我在拉动和推动方面遇到了问题。我创建了本地裸仓库并推送给它初始提交。之后我尝试使用PythonGit初始化新的用户仓库,获取它并从中拉出来。我没有初始化repo的问题但是我无法从远程/裸仓库获得任何东西。我的代码:

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>]

拉。在拉动之后,根本没有拉动任何东西,而且回购仍然是空的但存在。我做错了什么?

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

我不知道如何妥善解决这个问题,但唯一的想法就是在make_head之后重新设置硬复制品。[/ p>

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')

之后所有进一步的拉动应该正常工作。