【问题标题】:How do I make a patch from a github repo if I failed to make a feature branch?如果我未能创建功能分支,如何从 github 存储库中创建补丁?
【发布时间】:2013-09-11 18:03:01
【问题描述】:

我在 Github 上 fork/clone apache whirr,并开始在主干分支上工作。在工作期间,我从 origin/trunk 中提取了两个提交。当我通过运行 git diff first_feature_commit HEAD 生成补丁时,我得到一个包含这两个提交的补丁。因此,该补丁在我提交时被拒绝了。

如何在没有从源站/主干提取的提交的情况下创建补丁?

【问题讨论】:

    标签: git github patch rebase apache-whirr


    【解决方案1】:

    使用git format-patch 生成补丁,它将拆分它们。您也可以使用 git diff HEAD^ 进行比较,以仅获取您的提交(可能是最近的提交)。

    【讨论】:

      【解决方案2】:
      git checkout -b rj/rilly_feature
      git rebase -i master
      # remove spurious commits in interactive rebase file
      git diff master
      # observe success
      

      这是为了解决您创建功能分支的“失败”问题——如果您认为自己应该从功能分支工作,这将帮助您建立一个并允许您生成一个干净的补丁。

      【讨论】:

      • 对不起,我不应该说git diff,那样的话那将是空的。你能生成你想要的补丁吗? git diff master?
      • rebase 是一个 noop。 Git diff master 什么都不生成。
      • 这是否意味着创建分支和变基丢弃了您的更改?或者git log 中的内容是什么?
      【解决方案3】:

      1) 将远程添加到您有兴趣修补的存储库。大概是这样的

      git remote add upstream https://github.com/apache/whirr.git
      

      2) 获取遥控器。把它们全部搞定:

      git fetch --all
      

      3) 制作补丁!

      git diff upstream/trunk..HEAD >my.patch
      

      HTH! @eldondev

      【讨论】:

        【解决方案4】:

        当您只想获取那些在您的主分支中而不是在 origin/master(服务器)上的提交时,您可以使用

        git diff origin/master..HEAD
        

        更多详情请查看 Pro Git 的Git Tools - Revision Selection

        【讨论】:

          猜你喜欢
          • 2015-09-30
          • 2017-07-04
          • 1970-01-01
          • 2021-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多