我在我的主分支中进行了一些更改,并希望将这些更改带到上游。当我挑选以下提交时。但是,我卡在 fd9f578 上,git 说:
$ 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 ...
樱桃选择的工作方式是获取变更集所代表的差异(该点的工作树与其父工作树之间的差异),并将其应用于您当前的分支。
所以,如果一个提交有两个或更多的父母,它也代表了两个或更多的差异——应该应用哪一个?
您正在尝试挑选fd9f578,这是与两个父母的合并。-m因此,您需要通过使用该选项来告诉cherry-pick 命令应该针对哪个计算差异。例如,git cherry-pick -m 1 fd9f578使用父级 1 作为基础。
fd9f578
-m
git cherry-pick -m 1 fd9f578
对于您的特定情况,我不能肯定地说,但通常建议使用git merge代替。git cherry- pick当您选择合并提交时,它会将您未指定的父项中所做的 所有-m更改折叠到该 一次提交 中。你失去了他们所有的历史,并把他们所有的差异放在一起。您的来电。
git merge
git cherry- pick