为了账号安全,请及时绑定邮箱和手机立即绑定

git cherry-pick说:“…38c74d是合并,但未提供-m选项”

git cherry-pick说:“…38c74d是合并,但未提供-m选项”

Git
慕神8447489 2019-11-05 10:31:05
我在master分支中进行了一些更改,并希望将其引入上游。当我选择以下提交时,但是我陷入了git说的fd9f578上:$ git cherry-pick fd9f578fatal: Commit fd9f57850f6b94b7906e5bbe51a0d75bf638c74d is a merge but no -m option was given.git试图告诉我什么,在这里选择正确的选择是正确的选择吗?master分支确实包含对文件的更改,这些更改已在上游分支中进行了修改,因此我敢肯定会有一些合并冲突,但是合并冲突还算可以解决。我知道哪些地方需要更改。这些是我想带入上游的提交。e7d4cff added some comments...23e6d2a moved static strings...44cc65a incorporated test ...40b83d5 whoops delete whitspace...24f8a50 implemented global.c...43651c3 cleaned up ...068b2fe cleaned up version.c ...fd9f578 Merge branch 'master' of ssh://extgit/git/sessions_common4172caa cleaned up comments in sessions.c ...
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

樱桃选择的工作方式是,获取变更集表示的差异(该点上的工作树与其父级工作树之间的差异),并将其应用于当前分支。

因此,如果一个提交有两个或多个父项,则它也代表两个或多个差异-应该应用哪个差异?

您正在尝试选择fd9f578,这是两个父母的合并。因此,您需要通过使用该-m选项来告诉cherry-pick命令应针对哪个diff计算差异。例如,git cherry-pick -m 1 fd9f578以父级1为基数。

对于您的具体情况,我不能肯定地说,但通常建议使用git merge代替git cherry-pick。当您选择一个合并提交时,它会将您未指定的对父项所做的所有更改折叠-m到该提交中。您会失去他们的所有历史,并将他们所有的差异混在一起。您的来电。


查看完整回答
反对 回复 2019-11-05
?
慕慕森

TA贡献1856条经验 获得超17个赞

-m 表示父母编号。


从git doc:


通常,您无法选择合并,因为您不知道合并的哪一侧应被视为主线。此选项指定主线的父代号(从1开始),并允许cherry-pick重播相对于指定父代的更改。


例如,如果您的提交树如下所示:


- A - D - E - F -   master

   \     /

    B - C           branch one

然后git cherry-pick E会产生您遇到的问题。


git cherry-pick E -m 1表示使用D-E,而git cherry-pick E -m 2表示使用B-C-E。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 1692 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信