如何获取分段差异进行提交?

时间:2019-08-19 20:15:54

标签: gitpython

我想获取准备提交的差异列表(基本上等同于“ 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对象的列表,每个条目对应于我的一个暂存文件,但是第二个调用给了我一个空列表。

为什么第二个电话不给我与第一个电话相同的清单,但包含了差异信息?

我应该使用其他方法来获取此信息吗?

1 个答案:

答案 0 :(得分:0)

这是一个错误-我在GitPython issue 852中找到了一份文章和解决方法。

解决方法是在R=True并且第一个参数不为None时将参数create_patch=True添加到参数列表。详细信息在分析中。