我已经在github上分叉了一个项目,并且需要在我分叉后以diff格式进行一系列更改。
如果你想知道 - 我已经分叉了Apache httpd,我正在改变核心代码。目前我没有提交任何更改,运行git diff,并在RPM构建过程中将其输出用作针对vanilla httpd源的补丁。当然,这是错误的,但我不知道如何正确地做到这一点。我所知道的是我最终需要一个差异。
答案 0 :(得分:27)
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
分配的所有更改:
这不会比较最后一个'主'分支快照和最后一个'dev'快照 - 它会将两者的共同祖先与'dev'进行比较。这将告诉你自分支点以来发生了什么变化。
答案 1 :(得分:4)
如果您将跟踪“上游”仓库的分支推送到您的存储库,那么您也可以在github中看到差异:
git remote add mainRepo github_url
git fetch mainRepo
git branch main_repo_master mainRepo/master
git push origin main_repo_master
然后在网上看到它:
https://github.com/rdp/mplayer-svn/compare/master ... main_repo_master
参考:http://betterlogic.com/roger/2012/04/github-compare-commits
答案 2 :(得分:2)
获取父/叉点sha1:git merge-base master HEAD
得到差异:git diff <sha1>
或者在一个命令中:git difftool $(git merge-base master HEAD)
与sugar命令相同:git diff master...HEAD
答案 3 :(得分:2)
这是一个老问题,但我发现了一个非常好的方法直接从Github获取补丁或差异文件。
当你在叉子上时,有一个&#34;比较&#34;链路即可。使用它,您将进入比较视图。
实施例
https://github.com/luisgoncalves/xades4j/compare/master...beat2:master
现在你可以手动添加&#34; .diff&#34;或&#34;。补丁&#34;到此网址的末尾,您可以直接在浏览器中获取该文件。
实施例
https://github.com/luisgoncalves/xades4j/compare/master...beat2:master.diff