git diff hexsha:directorypath / file

时间:2015-02-24 12:36:34

标签: python git gitpython

鉴于已知hexshadirectoryfile,如何获取2个特定文件之间的差异,例如以下将返回2个修订版之间的差异:

irepo.git.diff("93ba8ae12f79e7f90e5ec5217e44ce28624a66d8..d144da4b5f0dff89b918bc88629cb7902150d77c")

但是,我怎样才能产生上述两个版本中包含的<directory>/<file>的差异?

1 个答案:

答案 0 :(得分:0)

你可以使用GitPython的内置差异设施来做到这一点。

import git
r = git.Repo(path_to_repo)
diff_index = r.commit(lhs_hexsha).diff(rhs_hexsha, create_patch=True)
# find all modified paths you are interested in
for diff_info in diff_index.iter_change_type('M'):
    if diff_info.a_blob.path == my_path:
        print(str(diff_info))

点击链接,详细了解diffing objectsdiff() call,已退回的DiffIndex object或其中包含的Diff objects

示例中引用的a_blobBlob对象,它在lhs_hexsha的提交时提供对比较文件的读访问权。还有b_blob表示rhs_hexsha处提交时文件的状态。