【问题标题】:Git cherry-picking remote commit from upstream, in a branch that isn't masterGit 从上游挑选远程提交,在非主分支中
【发布时间】:2018-10-02 13:12:06
【问题描述】:

我有以下与this one不同的情况。

这是我的本地仓库:

$ git branch
  branch1
  ...
  branchk
  master
* this-branch-where-fix-should-happen

我想要的是应用只存在于upstream:staging 分支中的提交。

我试图在某个分支中获取上游

$ git fetch upstream staging:staging

From github.com:<org>/<repo>
 * [new branch]              staging    -> staging

branch 的新输出。

$ git branch
  branch1
  ...
  branchk
  master
  staging
* this-branch-where-fix-should-happen

现在正在尝试挑选fix-branch

$ git cherry-pick -x <sha-1>
    fatal: bad object <sha-1>

在这种情况下有正确的挑选樱桃的方法吗?还是我的做法完全错误?


解决方案:找到问题并解决它

按照蒂姆·比格莱森的指示

获取上游

$ git fetch upstream

这就是我的错误所在,我是通过 github 站点获取提交号的,但这实际上是用于合并的 &lt;sha-1&gt;。要获得正确的提交号:

$ git log --pretty=oneline --grep="<some-info-about-the-commit>" upstream/staging

我使用了--grep="#pull-request-number" 并获得了正确的提交 ID。

<correct-sha-1> PR description (#PR-number)

现在正在尝试挑选fix-branch

$ git cherry-pick -x <correct-sha-1>

它有效!

【问题讨论】:

    标签: git cherry-pick


    【解决方案1】:

    只要您git fetchstaging 远程分支实际上应该存在本地,作为一个名为upstream/staging跟踪 分支,或类似的东西.如果你想定位来自这个跟踪分支的特定提交,它镜像远程,只需输入

    git log upstream/staging
    

    查看来自该分支的提交,然后选择你想要的。现在樱桃采摘应该可以了:

    # from the this-branch-where-fix-should-happen branch
    git cherry-pick -x <sha-1 from staging>
    

    【讨论】:

    • 非常感谢!我已编辑问题并接受此答案。
    猜你喜欢
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多