如何在github中的两个分支之间为单个文件生成diff

pla*_*our 96 git github

我需要为单个文件生成一个diff,它将显示两个版本之间的差异,这两个版本实际上是github中的标记.然后,我想通过电子邮件将此差异发送给某人,因此差异的github URL将是理想的.github比较视图将允许我对所有已更改的文件执行此操作,但这并不好,因为我的repo中有数千个文件.

我可以在命令行中执行此操作,如下所示,但这没有帮助,因为我需要通过电子邮件将差异发送给某人:

git diff tag1 tag2 -- path/to/file
Run Code Online (Sandbox Code Playgroud)

我在这里讨论了命令行版本: 如何在本地分支和远程分支之间查看指定文件的差异?

nul*_*ken 80

GitHub只暴露了在两次提交之间显示差异的方式.

如果这些标签实际指向提交,则Url格式就像

https://github.com/{user}/{repository}/compare/{from-tag}...{until-tag}

例如,https://github.com/libgit2/libgit2sharp/compare/v0.9.0...v0.9.5显示了两个版本的LibGit2Sharp项目之间的差异.此差异包括所有已修改的文件.

如果要检索定位特定文件的URL:

  • 切换到Files Changed选项卡

改变标签

  • 单击Show Diff Stats按钮(这将显示已修改文件的列表作为链接)

节目-DIFF

  • 将你想要的特定文件的链接复制到剪贴板...和Tada!你完成了.

例如,鉴于上面的差异,链接https://github.com/libgit2/libgit2sharp/compare/v0.9.0...v0.9.5#diff-11将指向LazyFixtures.cs版本v0.9.0和版本v0.9.0之间发生的更改v0.9.5.

更新

根据您的评论说明您的差异太大而无法通过Web界面呈现,那么如何恢复到良好的旧命令行工具?您可以将diff的输出重定向到文件,然后将该文件作为电子邮件附件发送.

$ git diff v0.9.0 v0.9.5 -- LibGit2Sharp.Tests/LazyFixture.cs > /tmp/lazyfixture.diff
Run Code Online (Sandbox Code Playgroud)

  • 嗨,看起来这对我不起作用,因为我的差异太大了.我得到了"这个差异很大!我们只显示前2,500个文件的状态信息." 因此,即使使用#diff链接,我也只能得到Diff Stats而不是完整的差异. (8认同)
  • 我没有看到 **显示差异统计** 按钮。消失了吗?或者我只是没有看到它? (4认同)
  • 我不知道为什么,但在我的私人存储库上,没有“文件已更改”选项卡。相反,我必须滚动过去提交列表,那里有一个“*n* 更改的文件”按钮,我可以单击该按钮,它会显示一个文件列表,我可以在其中复制指向特定文件的链接。 (3认同)
  • @plainflavour这里有一个更方便的提示,以防再次遇到这种情况 - 每当你有一个像@nulltoken指出的比较网址时,你也可以在URL的末尾添加一个.diff来查看完整的差异(尽管是明文) ).例如`https://github.com/ {user}/{repository}/compare/{from-tag} ... {until-tag} .diff` [来源](https://github.com/blog/ 967-GitHub的 - 秘密) (2认同)

f01*_*f01 6

以下问题适用时,我的解决方法如下.

这个比较很大!我们只显示最近的250次提交

将要比较的文件的原始视图复制到https://gist.github.com/.使用要比较的两个特定提交点.从较早的提交开始.

单击"修订"时,https://gist.github.com/有一个很好的并排差异视图.

  • 谢谢,这正好是我需要https://gist.github.com/ncoghlan/1067805fe673b3735ac854e195747493/revisions的建议!:) (2认同)