如何使用 gitpython 对当前提交与上次提交进行 git diff?

2023-11-25

我正在尝试掌握 gitpython 模块,

hcommit = repo.head.commit
tdiff = hcommit.diff('HEAD~1')

but tdiff = hcommit.diff('HEAD^ HEAD')不起作用!也不('HEAD~ HEAD').,

我正在尝试获取差异输出!


import git

repo = git.Repo('repo_path')
commits_list = list(repo.iter_commits())

# --- To compare the current HEAD against the bare init commit
a_commit = commits_list[0]
b_commit = commits_list[-1]

a_commit.diff(b_commit)

这将为提交返回一个 diff 对象。还有其他方法可以实现这一目标。例如(这是从复制/粘贴http://gitpython.readthedocs.io/en/stable/tutorial.html#obtaining-diff-information):

```

    hcommit = repo.head.commit
    hcommit.diff()                  # diff tree against index
    hcommit.diff('HEAD~1')          # diff tree against previous tree
    hcommit.diff(None)              # diff tree against working tree

    index = repo.index
    index.diff()                    # diff index against itself yielding empty diff
    index.diff(None)                # diff index against working copy
    index.diff('HEAD')              # diff index against current HEAD tree

```

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 gitpython 对当前提交与上次提交进行 git diff? 的相关文章

随机推荐

  • Linq-to-sql 不包含或不在?

    我正在构建一个民意调查小部件 我有 2 个表 分别称为 Polls 和 PollsCompleted 我需要执行 linq 查询来获取 PollsCompleted 中给定用户不存在的所有民意调查 我有以下几套 民意调查 其中 Active
  • 在编译时重命名符号,无需以跨平台方式更改代码

    在创建静态对象时 是否可以在编译时以跨平台方式重命名符号 无需更改代码 我最近推荐了 objcopy 但 linux 不是唯一的目标平台 它也必须在 mac 上运行 我正在使用 gcc 进行编译 所以我希望有某种 gcc 选项 我听说过 d
  • Proguard 回溯丢失的行号

    我正在尝试从我的 Android 应用程序中反混淆堆栈跟踪 我在构建应用程序时使用了 proguard 并且运行 retrace 似乎或多或少有效 不起作用的是解码行号 输出上不显示行号 它列出了每个 at 的多个选择 这是我的 progu
  • Ember Data 嵌套资源 URL

    假设我有一个具有以下布局的 Rails 应用程序 从我的实际项目中对此进行了一些简化 User has many Notes Category has many Notes Note belongs to User belongs to C
  • 在 PHP 中为逗号分隔的字符串添加引号

    我有一个表单 它是一个选择多个输入的表单 它发布如下值 option1 option2 option3 etc 将其转换为的最佳方法是什么 option1 option2 option3 etc 目前我正在这样做 但感觉不对 variabl
  • Spring Boot 升级错误 - 名称为 org.springframework.transaction.config.internalTransactionalEventListenerFactory 的 bean 定义无效

    在尝试在基于 java 的 Web 应用程序中将 spring boot 升级到最新版本 2 1 1 并将 spring 框架升级到 5 1 3 时 出现以下错误 Invalid bean definition with name org
  • Sqlalchemy:使用多个 filter() 调用生成 OR 子句

    我是 sqlalchemy 的新手 需要一些帮助 我正在尝试编写一个小型应用程序 我必须为其动态更改选择语句 所以我这样做s select files 然后我添加过滤器s s where files c createtime between
  • 终端启动时出现错误消息[重复]

    这个问题在这里已经有答案了 每次启动终端时我都会收到此错误消息 bash usr local bin usr local bin usr bin bin usr sbin sbin opt X11 bin No such file or d
  • Java:IndentingXMLStreamWriter 替代方案?

    我正在使用 StAX 创建一个相当大的 xml 文档 到目前为止 我一直在使用 IndentingXMLStreamwriter 类来获取格式良好的文档 另请参阅这个答案 几天前 我们使用较旧的 jdk 版本 6 26 设置了一个 jenk
  • JSF 更新复合组件

    是否可以仅通过指定父复合 ID 来更新复合组件的子组件 例如 如果我有
  • appcfg.py 显示您必须以管理员身份登录

    当我尝试通过以下方式将示例 csv 数据上传到我的 GAE 应用程序时appcfg py 它显示以下 401 错误 2015 11 04 10 44 41 820 INFO client py 571 Refreshing due to a
  • 如何在 Selenium WebDriver 中自动清除浏览器缓存?

    如何在每次测试运行之前清除浏览器缓存 我尝试过driver manage deleteAllCookies in setUp创建驱动程序实例后的方法 它适用于 Firefox 但对于 IE 不起作用 有没有IE的解决办法 请提供给我 您可以
  • .NET 中的跨进程读写同步原语?

    是否有跨进程工作的读 写锁定机制 类似于互斥锁 但读 写而不是独占锁定 我想允许并发读取访问 但允许独占写入访问 Windows 不包含跨进程读写锁 可以使用信号量和互斥量的组合来构造互斥量 互斥量由写入者持有以进行独占访问 或者由读取者持
  • 函数指针如何工作?

    我正在问一些具体问题 如何在类中初始化它们 如何将函数作为参数传递 类中是否需要声明和定义函数指针 对于问题 2 我的意思是 void s void void f function what should I put as type to
  • 通过 jquery 上下移动选择选项

    所以我让这段代码适用于 Firefox 和 Chrome 它的作用是允许您在 HTML 选择表单中重新排序选项 但是当我通过 IE8 测试代码时 它有点不完整 它仅适用于前几次单击 之后您必须多次单击该按钮才能使其工作 有谁知道任何其他代码
  • 解析 HTML 表格最快、最简单、最好的方法是什么?

    我正在尝试获取这张桌子http www datamystic com timezone time zones html转换为数组格式 这样我就可以用它做任何我想做的事情 最好是 PHP Python 或 JavaScript 这种问题经常出
  • RxJs 可观察分页

    第一 这是我使用 RxJs 的第一个项目 我想通过使用它我会学到最好的东西 我找到了这个答案 使用 RxJs 将分页请求转换为 Observable 流但评论里却说 您仍然超出了最大调用堆栈 返回大约 430 页 我认为递归可能不是最好的解
  • Shift + 鼠标滚轮水平滚动

    对于水平滚动 使用 Shift 滚轮相当常见 这两者都相当容易捕获 我可以使用 MouseWheel 事件以及由 KeyDown KeyUp 事件设置的标志来跟踪何时按下 Shift 键 但是 如何真正触发水平滚动呢 我知道 WM MOUS
  • GHC 7.7 中引入的自由覆盖条件破坏了 GHC 7.6 中有效的代码

    The idea 我正在写一个DSL 编译为 Haskell 该语言的用户可以定义自己的不可变数据结构和关联函数 我所说的关联函数是指属于数据结构的函数 例如 用户可以编写 用 pythonic 伪代码 data Vector a x y
  • 如何使用 gitpython 对当前提交与上次提交进行 git diff?

    我正在尝试掌握 gitpython 模块 hcommit repo head commit tdiff hcommit diff HEAD 1 but tdiff hcommit diff HEAD HEAD 不起作用 也不 HEAD HE