【问题标题】:How to view diff of a forked github project如何查看分叉的 github 项目的差异
【发布时间】:2011-04-17 02:50:52
【问题描述】:

我在 github 上 fork 了一个项目,并且需要在我 fork 后以 diff 格式进行一组更改。

如果您想知道 - 我已经分叉了 Apache httpd,并且我正在更改一些核心代码。目前我没有提交任何更改,运行 git diff,并在 RPM 构建过程中将其输出用作针对 vanilla httpd 源的补丁。当然,这是错误的,但我不知道如何正确地做到这一点。我只知道最后我需要一个差异。

【问题讨论】:

    标签: git diff github fork master


    【解决方案1】:

    在线解决方案:

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

    "compare two commits" API 确实支持多个存储库:

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

    例子:

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

    或使用 GitHub 网址:

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


    2010 年原始答案:

    • 将原始 GitHub 存储库(您分叉的那个)添加为本地存储库中的远程存储库。
      (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 哲学。
    • +1。如果我可以添加两个注释:如果您当前处于头部状态,我相信 HEAD 部分是不必要的。此外,如果您想在配置的 difftool 中查看更改,git difftool mainrepo/mastergit difftool ..mainrepo/master 也很有用。
    • 如何通过 TortoiseGit 查看分叉项目的差异 - stackoverflow.com/a/7297491/968003
    • fatal: ambiguous argument 'HEAD..upstream/master'fatal: ambiguous argument 'HEAD...upstream/master'... 颠倒参数没有区别。又一项简单的任务变得困难。
    • @jww 您是否在遥控器中定义了上游 (git remote -v)?您是否创建了一个名为upstream/master 的分支? (stackoverflow.com/a/26046933/6309) 还是标签 (stackoverflow.com/a/35980056/6309)?
    【解决方案2】:

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

    当您使用 fork 时,会有一个“比较”链接。使用它,您将进入比较视图。

    例子

    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

    【讨论】:

      【解决方案3】:

      如果您将跟踪“上游”存储库的分支推送到您的存储库,那么您也可以在 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

      【讨论】:

        【解决方案4】:

        获取父/叉点sha1:git merge-base master HEAD 获取差异:git diff <sha1>

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

        与sugar命令相同:git diff master...HEAD

        【讨论】:

          猜你喜欢
          • 2011-06-23
          • 2012-04-07
          • 2014-11-29
          • 2023-04-02
          • 1970-01-01
          • 2014-12-08
          • 2011-01-01
          • 1970-01-01
          • 2012-12-07
          相关资源
          最近更新 更多