2016-05-04 56 views
1

我正在嘗試使用gitpythongerrit項目的change拖入我的本地存儲庫。這可以使用下面的命令來完成,Git使用gitpython更改gerrit項目

git pull origin refs/changes/25/225/1 

這裏,refs/changes/25/225/1是未在gerrit提交的變化。我已將gerrit項目克隆到目錄中。現在,我想pull沒有提交到此目錄中的更改。下面提到的代碼是將git pull轉換爲包含.git文件的目錄的常用方法。

#gitPull.py 

import git 

repo = git.Repo('/home/user/gitRepo') 
o = repo.remotes.origin 
o.pull() 

這裏,gitRepo.git文件夾(它是克隆格里特項目)。我做了很多搜索,但沒有找到一種方法來使用gitpython執行上述命令git pull origin refs/changes/25/225/1

+0

我不是gitpython用戶,但是如果你開始與規則「從來不用拉」(被修改爲「使用拉*之後*你達到了你永遠不需要*使用它的地步「),並將操作分解爲兩個更加基本的步驟,'git fetch'和'git merge',我敢打賭你會發現那些很容易在gitpython中做。 – torek

+0

我一直在尋找'git'中的'fetch'或'merge'的方法。發現可以使用'git.execute()'來定製任何'git'函數。那就是訣竅。可以將它用於「提取」和「合併」,或者直接使用「拉」。 – nidHi

回答

0
import git 
import os, os.path 

g = git.Git(os.path.expanduser("/home/user/gitRepo")) 
result = g.execute(["git", "pull", "origin", "refs/changes/25/225/1"]) 

可以使用​​來做同樣的事情。

1

很好,這是一個簡單的給分公司作爲refspec parameter to the pull method

import git 

repo = git.Repo('/home/user/gitRepo') 
o = repo.remotes.origin 
o.pull('refs/changes/25/225/1')