Git 从上游挑选远程提交,在非主分支中



我有以下情况与这种情况不同。

这是我的本地存储库:

$ 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 站点获取提交编号,但这实际上是合并的一个<sha-1>。要获取正确的提交编号,请执行以下操作:

$ 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 fetchstaging远程分支实际上应该存在于本地,作为一个名为upstream/staging跟踪分支,或类似的东西。 如果要从此跟踪分支(镜像远程(中定位特定提交,只需键入

git log upstream/staging

以查看此分支中的提交,然后选择所需的提交。 现在樱桃采摘应该有效:

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

相关内容

  • 没有找到相关文章

最新更新