错误:提交是一个合并,但没有给出 -m 选项

Sat*_*ato 10 git

当我执行 git cherry-pick 时,出现此错误,我该如何解决?

$ git cherry-pick  XXXXXXXXXXXXX                                                                                                                                          
error: commit XXXXXXXXXXXXX is a merge but no -m option was given.
fatal: cherry-pick failed
$ git cherry-pick
    -m, --mainline <n>    parent number
$ git cherry-pick -m 1234 XXXXXXXXXXXXX
$ error: commit XXXXXXXXXXXXX does not have parent 1234
fatal: cherry-pick failed
Run Code Online (Sandbox Code Playgroud)

rob*_*ins 14

我在git revert用于恢复合并时遇到了同样的错误(结果证明是错误的功能分支)。这-m有点令人困惑。它不是在寻找消息。我认为它只是想知道您要还原的给定提交有多远(要还原多少个提交)

大多数时候它只是 1。也就是说,您只想在合并之前返回提交(我提供的提交哈希)。所以解决办法是:

git revert -m 1 <git_hash_for_merge>
Run Code Online (Sandbox Code Playgroud)

  • 您想要从引用的提交后退的提交数量。这意味着我想回到我提供的提交哈希之前的第一次提交 (3认同)

jbu*_*jbu 3

我认为帮助/手册页非常清楚地解释了为什么您需要 -m 参数,并且错误消息非常清楚地表明您需要它:

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

  • 我不会说“非常清楚”,“cherry-pick”是什么意思,“合并一侧”是什么意思,“主线”是什么意思,“父编号”是什么意思,“重播更改”是什么意思。这里使用了很多相当不清楚的俚语。除非您非常习惯 git,否则我怀疑您不会知道这些术语。 (45认同)
  • 像大多数 git 命令一样非常不直观。你合并了一些东西,你想撤消它,但你不能。首先,您必须阅读无意义的文档,因为它根本没有帮助,您最终会复制并粘贴一些随机命令并祈祷它有效。 (9认同)
  • 如何找到主线家长号码? (3认同)