【发布时间】:2016-12-05 16:22:45
【问题描述】:
当您查看文件的差异时,它会在顶部显示差异信息,然后突出显示下面的更改。
但是,在我查看的每个示例中...Github 突出显示的行号始终与 Git 在 Diff/Patch 信息中指定的行号不同。
例如this commit(注意差异数据显示@@ -362,7 +362,7 @@ def association_instance_set(name, association,但Github在第365行开始突出显示。)
或者这个:
或者这个:
最后还是这个:
似乎 Github 突出显示的实际行号通常比 Git 指定的补丁/差异数据高 3 行左右。
当我检查他们的 API 时,拉下我在上面突出显示并链接的第一个文件,将它吐出到一个数组中,然后使用 index 在数组中进行行数,我也得到了不同的结果。
差异指定更改的行,即362,使用我的数组转换方法输出到364,而不是Github 突出显示的365。
所以有点不对劲。
这是为什么呢?
【问题讨论】:
-
您使用哪种语言计算
index?它是否使用从零开始的索引(即第 365 行的索引为 364)? -
欧文好点。我正在使用 Ruby,它使用基于零的索引。所以这将解释我的实现和 Github 之间的
364到365的差异。但是,这仍然不能解释 GH 和 Git 之间的+3差异。 -
git diff有一个选项-U<n>或--unified=<n>来定义上下文行。默认 n 为 3。 -
我不清楚您在这里真正要寻找什么。一些可能的问题是:“为什么要使用 diff 提供任何上下文”、“为什么在提供上下文时它在更改的行的两侧各有 3 行”、“为什么 diffs 首先是面向行的”、“如何是否会突出显示 实际 更改 within 提供未更改上下文的差异”,等等。