如何挑选包含合并的分支
How to cherry-pick a branch that contains merges
我们在分支 master
的功能分支中开发新功能。有时,此类功能应向后移植到以前版本的软件,我们希望最好能完整保留历史记录。
我知道我可以使用 git cherry-pick A..B
来选择提交范围。但是,长期存在的功能分支可能包含合并以使其与主分支保持同步。遇到合并提交时,cherry-pick 中止。
是否有一些(最好是规范的)方法可以做到这一点?像
git cherry-pick --ignore-merges master...feature
作为参考,分支设置看起来有点像这样。我想从我的功能分支中挑选提交 H、K 和 K 到 version_old.
A - B - C - D - E - L [master]
| \ \
| H - J - M - K [feature]
\
F - G [version_old]
git log --pretty=%H --reverse --no-merges A..B | git cherry-pick --stdin
我尝试了几个 cherry-pick 选项,我认为这就是您要找的选项
git cherry-pick ^J H..K
它将挑选 H 和 K 之间的所有提交,不包括 J。
阅读 this
我们在分支 master
的功能分支中开发新功能。有时,此类功能应向后移植到以前版本的软件,我们希望最好能完整保留历史记录。
我知道我可以使用 git cherry-pick A..B
来选择提交范围。但是,长期存在的功能分支可能包含合并以使其与主分支保持同步。遇到合并提交时,cherry-pick 中止。
是否有一些(最好是规范的)方法可以做到这一点?像
git cherry-pick --ignore-merges master...feature
作为参考,分支设置看起来有点像这样。我想从我的功能分支中挑选提交 H、K 和 K 到 version_old.
A - B - C - D - E - L [master]
| \ \
| H - J - M - K [feature]
\
F - G [version_old]
git log --pretty=%H --reverse --no-merges A..B | git cherry-pick --stdin
我尝试了几个 cherry-pick 选项,我认为这就是您要找的选项
git cherry-pick ^J H..K
它将挑选 H 和 K 之间的所有提交,不包括 J。 阅读 this