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

我在master分支中进行了一些更改,并希望将其引入上游。当我选择以下提交时,但是我陷入了git说的fd9f578上:


$ git cherry-pick fd9f578

fatal: 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_common

4172caa cleaned up comments in sessions.c ...


慕神8447489
浏览 1586回答 3
3回答

千万里不及你

樱桃选择的工作方式是,获取变更集表示的差异(该点上的工作树与其父级工作树之间的差异),并将其应用于当前分支。因此,如果一个提交有两个或多个父项,则它也代表两个或多个差异-应该应用哪个差异?您正在尝试选择fd9f578,这是两个父母的合并。因此,您需要通过使用该-m选项来告诉cherry-pick命令应针对哪个diff计算差异。例如,git cherry-pick -m 1 fd9f578以父级1为基数。对于您的具体情况,我不能肯定地说,但通常建议使用git merge代替git cherry-pick。当您选择一个合并提交时,它会将您未指定的对父项所做的所有更改折叠-m到该提交中。您会失去他们的所有历史,并将他们所有的差异混在一起。您的来电。

慕慕森

-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。
打开App,查看更多内容
随时随地看视频慕课网APP