什么';gitpython和#x27;s diff和git log';有什么区别?

什么';gitpython和#x27;s diff和git log';有什么区别?,git,github,gitpython,Git,Github,Gitpython,我不理解git log-p的输出与gitpython的输出在差异方面的区别 例如,对于某些合并提交f534e1…,git log-p给出: commit f534e1... Merge: .... Author: .... Date: ... Merge pull request ... from ... 使用无差异,我认为这是正确的(差异随下一个日志条目而来-f534e1的父项之一…) 我想用gitpython实现同样的效果。我正在努力: repo = Repo("...") for

我不理解
git log-p
的输出与
gitpython
的输出在差异方面的区别

例如,对于某些合并提交
f534e1…
git log-p
给出:

commit f534e1...
Merge: ....
Author: ....
Date:   ...

Merge pull request ... from ...
使用无差异,我认为这是正确的(差异随下一个日志条目而来-f534e1的父项之一…)

我想用
gitpython
实现同样的效果。我正在努力:

repo = Repo("...")
for c in repo.iter_commits():
  print c.hexsha
  print c.summary
  print c.diff()
我得到:

f534e1...
Merge pull request ... from ...
[<git.diff.Diff object at 0x102cd3490>]
f534e1。。。
合并拉取请求。。。从…起
[]
带有一些差异

这有什么区别?我为什么要在这里买?如何模拟git log-p的行为?

根据,
c.diff()
将根据索引比较提交,即分阶段更改

看起来,
git log-p
将针对给定提交的所有父级生成一个特殊格式的diff。使用以下代码(基于您的示例)可以实现大致相当的效果

后者将生成一个包含所有相关信息的对象


如果您真正想要的是由
git log-p
生成的确切格式,您也可以调用
repo.git.log(p=True)
并自己解析输出。

git.diff.diff对象的实际属性是什么?嗯,我会阅读文档:)我问这些属性的值是什么?您是否将结果差异(如果它实际上包含任何显著差异,而不仅仅是git.diff.diff类的对象)与
git diff…
与每个合并父级进行了比较。
repo = Repo("...")
for c in repo.iter_commits():
  print c.hexsha
  print c.summary
  for p in c.parents:
    handle_diff(c.diff(p))