git cherry 选择一系列顺序提交,包括合并
Posted
技术标签:
【中文标题】git cherry 选择一系列顺序提交,包括合并【英文标题】:git cherry pick a range of sequently commits including merge 【发布时间】:2014-09-26 13:27:46 【问题描述】:我可以挑选一系列后续提交。
例如
在分支大师上,我想挑选从 d4fd8cad 到开发 HEAD 的更改
git cherry-pick d4fd8cad..develop
有错误
错误:提交 885c9e07264ac6b5d3960... 是一个合并,但没有给出 -m 选项。
致命的:樱桃采摘失败
如何使用 -m 选项?
【问题讨论】:
***.com/questions/9229301/…的可能重复 你看过documentation吗? @gravetii 我认为cherry-pick 可能不会做我想要的。它会丢弃我在合并提交中未指定给 -m 的父级所做的所有更改 你想达到什么目的?交互式变基可能是更好的解决方案?您可以在开发之上的新分支中创建一个交互式基础,选择您想要的提交,然后进行快进合并以使它们进入开发。在我给你一个正确的答案之前,我需要一些关于你真正想要达到的目标的帮助。 好吧,在这种情况下,cherry-pick 并不是最好的选择。也许,从另一个问题的答案中得到提示,您可以通过合并和其他一些操作来实现您想要的? 【参考方案1】:在这种情况下,使用交互式变基可能会更好。
要将 d4fd8cad..HEAD 从分支 develop 应用到 master,可以使用以下命令。
确保我们处于开发阶段:
git checkout develop
分支脱离开发:
git checkout -b develop-rebase
在 master 上做一个交互式 rebase。 -p 选项可让您保留合并提交。
git rebase master -i -p
删除所有在 d4fd8cad 之前提交的行。留下您想要挑选的提交。
保存变基文件。
解决冲突,如果有的话。
现在您的分支看起来与您希望您的主分支完全一样。看看gitk
来验证你是否愿意。
现在我们要做的就是将它合并到 master 中。如果这不是快进合并,则可能发生了错误,所以让我们添加 --ff-only 标志
git checkout master
git merge develop-rebase --ff-only
【讨论】:
如果您想保留合并提交,请使用-p
选项进行变基
-p, --preserve-merges 重新创建合并提交,而不是通过重放合并提交引入的提交来展平历史。不保留合并冲突解决方案或对合并提交的手动修改。这在内部使用了 --interactive 机制,但将其与 --interactive 选项显式结合通常不是一个好主意,除非您知道自己在做什么(请参阅下面的错误)。以上是关于git cherry 选择一系列顺序提交,包括合并的主要内容,如果未能解决你的问题,请参考以下文章