2012-06-12 78 views
8

我試圖用GitPython編寫一些Python腳本,我可以用它來簡化我的日常任務,因爲我管理很多分支。使用GitPython模塊獲取遠程HEAD分支

當談到編寫複雜的腳本時,我對Python也很新穎。

這是我所使用的API:GitPython API doc

我想它寫在GitPython,簡單地執行以下操作並解析出這說明我的遠程分支指向的HEAD部分。在另一個詞,我想基本上得到了remotes/origin/HEAD

$ git branch -a 
    master 
* branch_to_remove 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 
    remotes/origin/testing 

我瀏覽API文檔很多次,起初我無法理解這些API文檔的Python的格式,我找不到任何東西有用的除了remote_headremote_head

但我甚至不知道如何調用/初始化它。

這裏是我到目前爲止,你可以告訴我想要做的,簡單地重置爲「無分支」狀態並刪除當前分支我在:

import git 
from git import * 
repo = git.Repo("/some/path/testing") 
repo.git.branch() 
[some code to get the remotes/origin/HEAD, set it to remoteHeadBranch ] 
repo.git.checkout(remoteHeadBranch) # this should reset the Git back to 'no branch' state 
repo.git.checkout(D="branch_to_remove") 

任何幫助深表感謝!

謝謝。

回答

3

我剛纔看到你的問題我在想這個gitPython,看起來像非常好的工具,我在GitPython文檔中尋找這個具體的問題,沒有幸運,但如果你在github上搜索,你會看到很多測試那裏有一個測試。

你會看到這樣的事情,當你搜索 「刪除新的分支」:

# remove new branch 
Head.delete(new_remote_branch.repo, new_remote_branch) 

GitPython Reference

+0

感謝您的評論!我會試試這個! 在閱讀這些Python API文檔時,有人能幫助我嗎?我的意思是這個文檔非常不同,很難讓我讀一個像我這樣的Java人:-( 謝謝! – xbeta

+0

這將* NOT *工作,因爲你不能刪除你當前的分支,所以第一步總是返回到'no branch'狀態,我試圖去做什麼 '錯誤切換到'no'分支狀態 'git branch -d newMaster'返回退出狀態1:錯誤:無法刪除分支'你當前在'newMaster'。「 – xbeta

3

要打印當前分支:

print(repo.head.ref) 

要列出分支機構

print [str(b) for b in repo.heads] 

檢出一個分支

repo.heads[branch].checkout() 

repo.git.checkout(branch)

如果你想刪除一個分支,你需要在不同的本地分支,您可以通過多種方式

repo.heads['master'].checkout() 

repo.git.checkout('master')repo.git.checkout('remotes/origin/master')

希望這有助於