首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gitpython和git diff

gitpython和git diff
EN

Stack Overflow用户
提问于 2013-11-19 10:19:50
回答 7查看 31.6K关注 0票数 18

我希望只得到一个文件的差异,从git repo更改。现在,我正在使用gitpython来实际获取提交对象和git更改的文件,但我只想对文件更改的部分进行依赖分析。有没有办法让git区别于git python呢?或者我必须逐行比较每个文件?

EN

回答 7

Stack Overflow用户

发布于 2017-09-02 05:14:37

如果您想访问diff的内容,可以尝试这样做:

代码语言:javascript
复制
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'))) 

这将打印每个文件的内容。

票数 17
EN

Stack Overflow用户

发布于 2014-04-27 14:15:20

你可以使用GitPython和git命令"diff",只需要使用每次提交的“树”对象或你想要查看差异的分支,例如:

代码语言:javascript
复制
repo = Repo('/git/repository')
t = repo.head.commit.tree
repo.git.diff(t)

这将打印包含在此提交中的所有文件的“所有”差异,因此如果需要每个差异,则必须遍历它们。

对于实际的分支,它是:

代码语言:javascript
复制
repo.git.diff('HEAD~1')

希望这能有所帮助,致敬。

票数 16
EN

Stack Overflow用户

发布于 2013-11-19 12:36:22

正如您所注意到的,Git并不存储差异。给定两个blobs (更改前后),您可以使用Python's difflib module比较数据。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20061898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档