链接到 github 上比较视图中的行

use*_*234 8 github

类似于如何链接到 github 上的特定行号我想链接到 github 上的一行代码。不同之处在于我想链接到差异查看器中的一行。例如,请参阅此链接:

https://github.com/git/git/commit/5bdb7a78adf2a2656a1915e6fa656aecb45c1fc3/#diff-fea9abc098557219301972e6c6782b8fL9

除了提交哈希 ( 5bdb7a78...) 之外,url 锚点 ( #diff-fea9abc0...) 中还有第二个十六进制字符串,似乎指定了要更改的文件。

我希望能够生成这些链接,而无需先访问 github 并单击该行。第二个十六进制字符串 ( #diff-fea9abc0...)是如何生成的?

use*_*234 9

锚点哈希是对链接到的文件名的引用。在上面的问题中,链接行指向文件 contrib/hooks/multimail/README.Git 的第 9 行(在左侧)。要为该文件生成散列,只需对其进行 MD5 散列:

% md5 -s contrib/hooks/multimail/README.Git
MD5 ("contrib/hooks/multimail/README.Git") = fea9abc098557219301972e6c6782b8f
Run Code Online (Sandbox Code Playgroud)

然后附加LR取决于您是要引用补丁中的左侧(原始)还是右侧(更改后),并附加行号:

               MD5 (filename)          Line number
      /------------------------------\ v
#diff-fea9abc098557219301972e6c6782b8fL9
                                      ^
                                    L or R
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这似乎不适用于折叠的大差异,即使您将行号放在其末尾,Github 也不会“跳转”到您单击链接时指定的行,它只会带您到提交差异的顶部。Bitbucket 支持此功能,但 Github 似乎不支持。 (2认同)
  • 注意:Github 似乎已将哈希算法从 MD5 更新为 SHA256。 (2认同)
  • @JurajMartinka 是的!您遇到的问题是默认情况下`echo` 包含一个尾随换行符,因此您实际上获得了“NOTICE.txt\n”的哈希值。你可以使用`-n` 选项来避免这种情况: `echo -n 'NOTICE.txt' | sha256sum`->`b810ebe4ffda4293c79d292059b45b59de7e649e86314ffd5a1ee4eb4b1e08c8-` (2认同)