【问题标题】:How to merge 2 pull requests from one branch to another in git如何在 git 中将 2 个拉取请求从一个分支合并到另一个分支
【发布时间】:2020-11-05 18:39:13
【问题描述】:

我有 2 个分支,分别是 master 和 feature。

这是 master 分支的实际 git 日志,我需要将 2 个拉取请求(#174 和 #173)合并到我的功能分支中。

commit e6a35ad0b2363932ac190ec602a7fd0c8bf9f04f (HEAD -> master, origin/master, origin/HEAD)
Merge: a922cb0 f45db00
Author: xyz
Date:   Wed Sep 2 17:55:32 2020 -0700

    Merge pull request #174 from xyz/v4upgrade
    
    readjust null values for string data type from v4

commit f45db00e1e4b1cce05eb1035b6bd3d3eab97f3bc
Author: xyz
Date:   Wed Sep 2 17:32:07 2020 -0700

    readjust null values for string data type from v4

commit a922cb0a5eb4bf2b7734af8041fb9cffcd2cee5f
Merge: 5f00c71 c9ab5c3
Author: xyz
Date:   Tue Sep 1 23:42:48 2020 -0700

    Merge pull request #173 from xyz/v4upgrade
    
    Implementation for UI fields for user info API

我想将pull request #173pull request #174 合并到feature 分支。

我尝试了樱桃采摘提交,但收到如下错误:

git checkout feature
git cherry-pick e6a35ad0b2363932ac190ec602a7fd0c8bf9f04f
error: commit e6a35ad0b2363932ac190ec602a7fd0c8bf9f04f is a merge but no -m option was given.
fatal: cherry-pick failed

git cherry-pick a922cb0a5eb4bf2b7734af8041fb9cffcd2cee5f
error: commit a922cb0a5eb4bf2b7734af8041fb9cffcd2cee5f is a merge but no -m option was given.
fatal: cherry-pick failed

【问题讨论】:

  • 我认为您需要更正您的意思....或者您对合并的理解。如果您合并 commit_id 3,那会将来自提交 2 和 1 的更改带到您正在处理的分支中。因此,如果您的意思是继承这两个修订版引入的更改(然后您会挑剔),那么这个问题就无法正确解决。
  • 鉴于这两个修订版是 merge 修订版(这就是 git 抱怨的原因),您可能会考虑实际挑选真正的修订版而不是合并到 master 中?跨度>
  • @eftshift0 很抱歉造成混乱。请查看我的更新。
  • @eftshift0 你能给我举个例子,告诉我如何挑选真正的修订版吗?你的意思是挑选父提交吗?
  • 作为答案提供了

标签: git git-merge git-cherry-pick


【解决方案1】:

如果您想将来自 2 个 PR 的更改合并到另一个分支,然后从 master 中挑选与 PR 相关的修订(独立)到 develop。

说……像这样的:

git checkout -b temp dev # will work on temp to cherry-pick revisions
# cherry-pick changes related to commit_id_3
git cherry-pick $( git merge-base commit_id_3~ commit_id_3^2 )..commit_id_3^2
git checkout dev
git merge --no-ff -m "Merging changes from commit 3" temp # then we merge into dev

commit_1 也可以做同样的事情。也就是说,假设这些 PR 是直的,并且在它们的历史中没有合并。

澄清:merge-base 允许知道在 commit_id_3 (或其他)中合并的 PR 是从哪个修订开始的,因此cherry-pick 只能携带修订以开发任何 PR。

【讨论】:

  • 这里的temp 是什么? commit_id_3^2 指的是哪个 id?还有..后面的)是什么?
  • 使用任何提交 id 来合并 pr。例如456785678^2
  • .. 将被使用就像那样,结束 ).. 和示例中提供的以下修订之间没有空格。跨度>
  • 我的错。让我纠正一下。 (寻找丢失的$
  • 嗯...这只是为了让您可以创建一个合并到 dev...随意直接在 dev 上工作。
猜你喜欢
  • 2020-02-17
  • 2017-12-02
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多