如何在 git 中将 2 个拉取请求从一个分支合并到另一个分支
How to merge 2 pull requests from one branch to another in git
我有 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 #173
和 pull request #174
合并到 feature
分支。
我尝试了 cherry picking commits 但得到如下错误:
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
如果您想将来自 2 个 PR 的更改合并到另一个分支,那么 cherry-pick 与 PR 相关的修订(独立地)从 master 到 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 是 straight 并且在它们的历史中没有合并。
澄清:merge-base 允许知道合并到 commit_id_3(或其他)中的 PR 是从哪个修订版开始的,因此 cherry-pick 只能进行开发修订任何 PR.
我有 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 #173
和 pull request #174
合并到 feature
分支。
我尝试了 cherry picking commits 但得到如下错误:
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
如果您想将来自 2 个 PR 的更改合并到另一个分支,那么 cherry-pick 与 PR 相关的修订(独立地)从 master 到 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 是 straight 并且在它们的历史中没有合并。
澄清:merge-base 允许知道合并到 commit_id_3(或其他)中的 PR 是从哪个修订版开始的,因此 cherry-pick 只能进行开发修订任何 PR.