我在Github上分叉了一个项目,并需要以diff格式列出自从我分叉以来所做的一系列更改。
如果您想知道 - 我已经分叉了Apache httpd,并正在更改核心代码。 目前,我没有提交任何更改,运行git diff,并使用其输出作为补丁针对纯净的httpd源在RPM构建过程中。 当然,这是错误的,但我不知道如何正确处理。 所有我知道的就是最终需要一个差异。
在线解决方案:
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年的原始答案:
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”进行比较。这将告诉您自分支点以来发生了什么变化。
这是一个老问题,但我刚找到了一种非常好的方法,可以直接从Github获取补丁或差异文件。
当您在自己的分支上时,有一个"比较"链接。使用它,您可以进入比较视图。
示例
https://github.com/luisgoncalves/xades4j/compare/master...beat2:master
现在您可以手动将“.diff”或“.patch”添加到此网址的末尾,然后您可以直接在浏览器中获取文件。https://github.com/luisgoncalves/xades4j/compare/master...beat2:master.diff
git remote add mainRepo github_url
git fetch mainRepo
git branch main_repo_master mainRepo/master
git push origin main_repo_master
获取父分支/分叉点的sha1值:git merge-base master HEAD
获取差异:git diff <sha1>
或者使用一个命令:git difftool $(git merge-base master HEAD)
这与糖果命令相同:git diff master...HEAD
git difftool mainrepo/master
和git difftool ..mainrepo/master
非常有用。 - Peter Majeedgit remote -v
)? 你创建了一个名为upstream/master
的分支吗?(https://dev59.com/i18e5IYBdhLWcg3wJXrm#26046933),或者一个标签 (https://dev59.com/i18e5IYBdhLWcg3wJXrm#35980056)? - VonC