我希望只得到一个文件的差异,从git repo更改。现在,我正在使用gitpython来实际获取提交对象和git更改的文件,但我只想对文件更改的部分进行依赖分析。有没有办法让git区别于git python呢?或者我必须逐行比较每个文件?
发布于 2017-09-02 05:14:37
如果您想访问diff的内容,可以尝试这样做:
repo = git.Repo(repo_root.as_posix())
commit_dev = repo.commit("dev")
commit_origin_dev = repo.commit("origin/dev")
diff_index = commit_origin_dev.diff(commit_dev)
for diff_item in diff_index.iter_change_type('M'):
print("A blob:\n{}".format(diff_item.a_blob.data_stream.read().decode('utf-8')))
print("B blob:\n{}".format(diff_item.b_blob.data_stream.read().decode('utf-8'))) 这将打印每个文件的内容。
发布于 2014-04-27 14:15:20
你可以使用GitPython和git命令"diff",只需要使用每次提交的“树”对象或你想要查看差异的分支,例如:
repo = Repo('/git/repository')
t = repo.head.commit.tree
repo.git.diff(t)这将打印包含在此提交中的所有文件的“所有”差异,因此如果需要每个差异,则必须遍历它们。
对于实际的分支,它是:
repo.git.diff('HEAD~1')希望这能有所帮助,致敬。
发布于 2013-11-19 12:36:22
正如您所注意到的,Git并不存储差异。给定两个blobs (更改前后),您可以使用Python's difflib module比较数据。
https://stackoverflow.com/questions/20061898
复制相似问题