回答
Nota buena:當我在自己的項目中嘗試過時,我不太能夠得到這個答案。我不確定是否因爲我在此答案中提供的信息不正確,或者是因爲我的代碼中存在其他問題。
無論如何,這個答案中的信息很難找到,我相信它是正確的或非常接近正確的,所以它仍然有用。請注意,當你使用這個建議時會有龍。
合併後,GitPython將工作目錄的狀態存儲在repo.index
中。 repo.index
包含一個方法index.unmerged_blobs
,它可以讓你檢查每個blob(文件)的狀態,這些blob(文件)已經被修改但沒有被提交進行提交。 您可以迭代這些blob以查看是否有合併衝突。
每個blob都與從0到3(包括)的狀態相關聯。狀態爲0的Blob成功合併。合併後,狀態爲1,2或3的Blob發生衝突。
準確地說,所述index.unmerged_blobs
函數返回文件路徑的字典來一個元組列表。每個元組包含一個從0到3的階段和一個blob。這是如何打破:
- 字典中的每個鍵是項目中的其中一個文件的路徑。
- 每個值實際上是修改密鑰引用文件的blob列表。這是因爲,在一般情況下,可能有多個更改會影響相同的文件。
- 由值存儲的列表中的每個條目都是元組。
- 元組中的第一個條目是blob的階段。合併後立即進入0階段意味着該blob沒有合併衝突。 1到3的階段意味着有衝突。
- 元組中的第二項是blob本身。如果您選擇,您可以對其進行分析以查看blob原始內容的更改。爲了在問題中陳述的目的,您可以忽略斑點。
- 由值存儲的列表中的每個條目都是元組。
下面是一些代碼,以上設備結合起來:
# We'll use this as a flag to determine whether we found any files with conflicts
found_a_conflict = False
# This gets the dictionary discussed above
unmerged_blobs = repo.index.unmerged_blobs()
# We're really interested in the stage each blob is associated with.
# So we'll iterate through all of the paths and the entries in each value
# list, but we won't do anything with most of the values.
for path in unmerged_blobs:
list_of_blobs = unmerged_blobs[path]
for (stage, blob) in list_of_blobs:
# Now we can check each stage to see whether there were any conflicts
if stage != 0:
found_a_conflict = true
我從這個緩存的Google網上論壇討論中獲得了大部分答案:http://webcache.googleusercontent.com/search?q=cache:WNqVZWPhBvAJ:https://groups.google。com/d/topic/git-python/SefBpTUNXVY +&cd = 8&hl = en&ct = clnk&gl = us – Kevin
以及GitPython的API參考:https://gitpython.readthedocs.org/en/stable/reference.html#git.index .base.IndexFile.unmerged_blobs – Kevin
- 1. 如何使用GitPython?
- 2. 與GitPython一起使用GIT_SSH_COMMAND
- 3. 使用gitpython獲取更改的文件
- 4. 如何使用gitpython進行更改
- 5. Git使用gitpython更改gerrit項目
- 6. 如何使用gitpython來獲取git?
- 7. 如何使用GitPython庫git pull rebase?
- 8. GitPython與Python 3.x一起使用嗎?
- 9. 如何使用gitpython獲取user.email配置?
- 10. Gitpython ssh密碼
- 11. GitPython日誌()錯誤
- 12. GitPython:我如何訪問GitPython中的提交文件的內容
- 13. 使用gitpython和py2exe時禁用cmd窗口的彈出窗口?
- 14. 使用用戶名和密碼的gitpython git認證
- 15. gitpython創建zip檔案
- 16. Gitpython檢查回購克隆
- 17. 在Windows 7上安裝GitPython
- 18. 使用gitpython的兩個分支的差異提交消息
- 19. 無法使用gitpython庫將文件提交到git
- 20. 如何使用gitpython獲取完整上下文的git diff
- 21. 使用GitPython查找分支上的第一次提交
- 22. 如何使用Python和PyGithub/GitPython克隆我的git倉庫?
- 23. 如何使用Gitpython從Git中的特定分支克隆
- 24. gitpython檢查使用PYTHON的文件是否有任何更改
- 25. 如何使用GitPython推送到遠程回購
- 26. 如何使用GitPython獲取未發佈的提交數?
- 27. 使用GitPython模塊獲取遠程HEAD分支
- 28. 使用GitPython,我該如何做git子模塊更新--init
- 29. 使用Gitpython推refs/for/master和change-id問題
- 30. 如何使用GitPython來獲取遠程存儲庫?
我已經找到了這個問題的答案,但我有一個很難找到自己的答案。 [所以我發佈的問題和答案,我會找到幫助](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ )。 – Kevin