我想获取准备提交的差异列表(基本上等同于“ git diff --cached”)。
我正在使用gitpython。我发现我可以很容易地获得暂存文件的列表,但是一旦我请求生成差异文件,该列表就为空。
#!/usr/bin/env python3
from git import Repo
myrepo = Repo() # current directory
staged_files = myrepo.index.diff(myrepo.head.commit, create_patch=False)
print(staged_files)
staged_blobs = myrepo.index.diff(myrepo.head.commit, create_patch=True)
print(staged_blobs)
我得到的是这样:
[<git.diff.Diff object at 0x7f52753c7710>, <git.diff.Diff object at 0x7f527538f200>]
[]
即,第一个调用给了我一个Diff对象的列表,每个条目对应于我的一个暂存文件,但是第二个调用给了我一个空列表。
为什么第二个电话不给我与第一个电话相同的清单,但包含了差异信息?
我应该使用其他方法来获取此信息吗?
答案 0 :(得分:0)
这是一个错误-我在GitPython issue 852中找到了一份文章和解决方法。
解决方法是在R=True
并且第一个参数不为None时将参数create_patch=True
添加到参数列表。详细信息在分析中。