我在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
到该提交中。您会失去他们的所有历史,并将他们所有的差异混在一起。您的来电。
慕慕森
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。
- 3 回答
- 0 关注
- 1692 浏览
添加回答
举报
0/150
提交
取消