You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git blame --incremental输出中的sourceline与resultline是什么?

关于git blame --incremental中sourceline和resultline的解释

我来帮你理清这两个字段的含义,结合Git官方文档的定义和实际使用场景拆解一下:

先明确核心背景

git blame --incremental的输出是Git在逐步构建blame结果过程中实时产生的,输出顺序是按提交新旧倒序排列的,专门给交互式工具解析使用,格式和Porcelain格式类似,但不会附带被注释文件的实际行内容。每个blame条目开头是40位SHA-1哈希,后面跟着各类描述字段,其中sourceline和resultline是描述行位置的关键项。

sourceline:源提交中的行号

这个字段对应的是当前提交的父版本文件里,该行内容原本所在的行号:

  • 如果这一行是从父提交中继承而来(未被当前提交修改),sourceline就是父提交文件中该行的行号;
  • 如果这一行是当前提交新增的(父提交里完全没有这行内容),sourceline会显示为0;
  • 简单来说,它记录的是这一行“起源位置”的原始行号。

resultline:最终结果中的行号

这个字段对应的是你运行git blame时,目标文件当前版本中该行的实际行号:

  • 不管这一行是继承来的、新增的还是被修改过的,resultline就是它在最终文件里的真实位置;
  • 这也是你用普通git blame(不带--incremental)命令时,左边显示的那个行号。

举个直观例子:假设你在父提交的文件第5行后面新增了一行内容,那么在这个新增提交的blame条目中,sourceline是0,而resultline是6(因为新增后它在当前文件的第6行);如果是修改了父提交的第3行,且没有其他行变动,那么sourceline是3,resultline也还是3。

额外补充:因为--incremental是增量输出模式,这些字段是Git在逐步计算blame结果时实时吐出的,能让交互式工具不用等整个blame计算完成就可以开始处理内容。

内容的提问来源于stack exchange,提问作者micnil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:23:13