如何查看 GitHub 上 fork 项目的差异

42

我在Github上分叉了一个项目,并需要以diff格式列出自从我分叉以来所做的一系列更改。

如果您想知道 - 我已经分叉了Apache httpd,并正在更改核心代码。 目前,我没有提交任何更改,运行git diff,并使用其输出作为补丁针对纯净的httpd源在RPM构建过程中。 当然,这是错误的,但我不知道如何正确处理。 所有我知道的就是最终需要一个差异。

4个回答

41

在线解决方案:

get /repos/{owner}/{repo}/compare/{base}...{head}

"比较两个提交"API支持多个仓库:

:base:head都必须是:repo中的分支名称。
要比较其他与:repo在同一网络中的仓库中的分支,请使用格式<USERNAME>:branch

例如:

https://api.github.com/repos/octocat/hello-world/compare/master...abejpn:master

或者使用GitHub URL:

https://github.com/octocat/Hello-World/compare/master...abejpn:master


2010年的原始答案:

  • 将原始 GitHub 仓库(您已经 fork 的那个)作为远程仓库添加到本地仓库中。
    (git remote add mainRepo github_url)
  • git fetch mainRepo 获取来自原始 "mainRepo" 的最新更改。
  • git log HEAD..mainRepo/master 将显示您当前分支和 mainRepo 主分支之间的所有更改。
    git diff HEAD..mainRepo/master 会以差异格式显示它。

learn.GitHub中:

git diff mainRepo/master...HEAD

您希望列出自从您从mainRepo分叉以来所做的所有更改:

这不会比较最后一个“master”分支快照和最后一个“dev”快照 - 而是将两者的共同祖先与“dev”进行比较。这将告诉您自分支点以来发生了什么变化。


非常感谢,这解决了我的问题。我一定需要花些时间更深入地理解git的哲学。 - GDR
如果我可以添加两个注释:如果您当前正在HEAD上,则我认为HEAD部分是不必要的。此外,如果您想查看已配置的difftool中的更改,则git difftool mainrepo/mastergit difftool ..mainrepo/master非常有用。 - Peter Majeed
如何通过TortoiseGit查看分叉项目的差异 - https://dev59.com/vGw05IYBdhLWcg3wVwc4#7297491 - Alex Klaus
“fatal: ambiguous argument 'HEAD..upstream/master'” 和 “fatal: ambiguous argument 'HEAD...upstream/master'”… 反转参数也没有任何区别。又是一个简单的任务变得困难了。 - jww
@jww 你在远程仓库中定义了上游吗 (git remote -v)? 你创建了一个名为 upstream/master 的分支吗?(https://dev59.com/i18e5IYBdhLWcg3wJXrm#26046933),或者一个标签 (https://dev59.com/i18e5IYBdhLWcg3wJXrm#35980056)? - VonC

15

这是一个老问题,但我刚找到了一种非常好的方法,可以直接从Github获取补丁或差异文件。

当您在自己的分支上时,有一个"比较"链接。使用它,您可以进入比较视图。

示例

https://github.com/luisgoncalves/xades4j/compare/master...beat2:master
现在您可以手动将“.diff”或“.patch”添加到此网址的末尾,然后您可以直接在浏览器中获取文件。
示例
https://github.com/luisgoncalves/xades4j/compare/master...beat2:master.diff

来源:https://github.com/blog/967-github-secrets


7

2

获取父分支/分叉点的sha1值:git merge-base master HEAD

获取差异:git diff <sha1>

或者使用一个命令:git difftool $(git merge-base master HEAD)

这与糖果命令相同:git diff master...HEAD


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接