2015-01-29 1 views
1

저는 PythonGit에서 새로운데, 당기거나 밀 때 문제가 있습니다. 나는 지역에서 벌거 벗은 레포 (repo)를 만들어 처음 커밋을했다. 그 후 PythonGit을 사용하여 새 사용자 저장소를 초기화하고 가져 와서 가져 오려고했습니다. Repo를 초기화하는 데는 아무런 문제가 없지만 원격/베어 Repo에서 아무 것도 얻을 수 없습니다. 내 코드 :GitPython은 풀 후 작업 복사본에 아무것도 표시되지 않습니다.

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

을 끌어 오기 위해. 액션을 취한 후에는 아무 것도 당기지 않고 리포는 여전히 비어 있지만 존재합니다. 내가 뭘 잘못하고있어?

+0

내가 empty_repo 당신이 경로로 초기화 REPO이어야한다 같아요. 그렇지 않으면 파일을 저장할 위치를 알 수 없습니다. – phobic

+0

예제 코드에서 버그가 발생했습니다. 이제는 정확합니다. – Magnar

+0

결과를 재현 할 수있었습니다. 실제로 파일은 삭제됩니다. 당신은 체크 아웃하거나 재설정 할 수 있습니다 - 당신의 저장소. 나는 이것이 당신의 코드의 create_head 라인과 관련이 있다고 생각하지만 왜 이런 일이 일어나는 지 모른다. – phobic

답변

2

pull()은 에 의해 지정된 대상 확약에 이미있는 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

나는이 문제를 어떻게 적절히 해결할 수 있는지 잘 모르지만, 유일한 생각은 create_head 이후 하드 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() 
repo.head.reset('--hard') 

그런 다음 모든 추가 끌어 오기가 제대로 작동해야합니다.