首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git cherry-pick语法和合并分支

Git cherry-pick语法和合并分支
EN

Stack Overflow用户
提问于 2012-09-28 01:16:13
回答 4查看 78.4K关注 0票数 78

所以我以前做过无数次樱桃选择,似乎我现在的生活肯定失败了,我正在尝试从一个分支到另一个分支的樱桃选择,这应该是很容易的,我怎么会得到一个错误,它是一个合并,而不是-m被给出?

代码语言:javascript
复制
$ git cherry-pick a8c5ad438f6173dc34f6ec45bddcef2ab23285e0
error: Commit a8c5ad438f6173dc34f6ec45bddcef2ab23285e0 is a merge but no -m option was given.
fatal: cherry-pick failed

看起来wrong.......it应该是:

代码语言:javascript
复制
$ git cherry-pick a8c5ad438f6173dc34f6ec45bddcef2ab23285e0

从什么时候开始我必须提供-m函数了?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-28 03:17:59

如果提交是合并提交,即具有多个父级的提交,则必须提供-m

通常,git cherry-pick REV所做的事情可以描述为:

  1. 采用修订版及其父级之间的更改。
  2. 将这些更改应用于当前标头,并使用修订版的提交消息提交结果。

合并提交连接两行开发。例如,一行实现了小部件,另一行去除了杂乱。合并为您提供了带有小部件的代码,消除了混乱。

现在考虑一下选择过程的第一步: git不能猜测您是想要去除杂乱还是要实现小部件。您也不能同时做这两件事,因为关于如何做这两件事的信息并不包含在单个合并提交中,只包含合并后的树的内容。

-m选项允许您告诉git如何继续。例如,如果杂乱删除发生在master上,并且合并提交是使用git merge WIDGET创建的,那么git cherry-pick -m 1 merged-commit将精挑细选新的小部件,因为合并后的树和父1(最后一个杂乱删除提交)之间的差异将是添加的小部件。另一方面,git cherry-pick -m 2 merge-commit将删除杂乱,因为parent 2(添加小部件的最后一个提交)和合并提交之间的差异正是小部件分支中缺少的杂乱删除。

票数 96
EN

Stack Overflow用户

发布于 2016-01-21 00:40:32

就我个人而言,我通常所做的是,由于合并合并了两个提交,例如,如果我有由两个父级组成的合并提交C,例如,master中的commit A和来自另一个要合并的分支的commit B,如果我需要樱桃挑选合并,我不会费心使用令人困惑的命令樱桃挑选合并提交本身,而只是单独樱桃挑选每个父级A和B,这在这样的情况下也很有帮助,这种情况下,你只想樱桃挑选提交B的情况下,从master的提交A已经樱桃挑选的分支,一个是樱桃挑选的分支之前合并发生。

票数 4
EN

Stack Overflow用户

发布于 2012-09-28 01:45:29

手册页中的语法如下:

代码语言:javascript
复制
git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] <commit>...

parent-number表示:

-m parent-number,--mainline parent-number,通常您不能精挑细选合并,因为您不知道合并的哪一侧应该被视为主线。此选项指定主线的主线编号(从1开始),并允许cherry-pick重播相对于指定的父线的更改。

因此,我会仔细检查以确保您拥有正确的提交散列。这可能是您想要一个不是来自合并的提交,而是它之前的提交。否则,您需要使用此标志并指向merge的正确一侧来消除请求的歧义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12626754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档