Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Cherry pick合并提交失败,提交为空_Git_Merge_Git Merge_Cherry Pick_Git Cherry Pick - Fatal编程技术网

Git Cherry pick合并提交失败,提交为空

Git Cherry pick合并提交失败,提交为空,git,merge,git-merge,cherry-pick,git-cherry-pick,Git,Merge,Git Merge,Cherry Pick,Git Cherry Pick,我有几个分支,我希望第二个分支的更改显示在第一个分支中 最好用图表来描述: X - Y - Z (branch-2) / \ A - B - C - D - E - F (master) \ G - H - I (branch-1) 我想将X,Y,Z合并到分支-1,而不带B和C 我尝试了cherry pick merge commitF,尽管我指定了正确的父级(我想),但cherry pick失

我有几个分支,我希望第二个分支的更改显示在第一个分支中

最好用图表来描述:

          X - Y - Z    (branch-2)
         /         \
A - B - C - D - E - F  (master)
 \     
  G - H - I            (branch-1)
我想将
X
Y
Z
合并到
分支-1
,而不带
B
C

我尝试了cherry pick merge commit
F
,尽管我指定了正确的父级(我想),但cherry pick失败了:
上一个cherry pick现在为空,可能是由于冲突解决。


我应该选择
X^..Z
范围吗?或者有更好的方法吗?

如果分支2较小,则逐个采摘樱桃可能是一个解决方案

对于要移动的较大分支,我会这样做:

git checkout branch-2
git branch   moving/branch-2 # new branch to work with
git rebase --onto  branch-1 [sha_of_c] moving/branch-2 # move commits of branch ontop of the other 
git checkout branch-1 
git reset --hard  moving/branch-2 # set branch lable to new HEAD
git branch -d  moving/branch-2 # clean up
正如注释中@quetzalcatl所建议的那样,您可以使用
-i
开关和
重基
,以便在实际执行之前检查是否复制了正确的提交


另一方面,如果出现问题,您可以简单地将移动/branch-2还原为
branch-2
,然后重新开始。

是的,我认为您是对的。你可以按照正确的顺序选择三个提交,然后你可以选择使用git-rebase-i~1命令将这三个提交减少为一个提交。我会逐个选择。另外,请查看此图以了解错误消息。图形绘图没有显示哪个父级是哪个,但您可能需要
-m2
,而不是更典型的
-m1
。不过,您提出的解决方案(选择
X^..Z
)可能是最好的方法。请注意,您可以使用
-n
在运行时将它们合并到索引中,并在最后进行一次提交,尽管我可能也会进行交互式的重新基础挤压,因为这意味着我可以在运行时解决任何冲突,并确保在挤压之前没有破坏任何内容。只需一个注意事项-对于所有“使用重新基础感到不安全”的人,将
-i
添加到
rebase
。这将向您显示将要执行的提交列表,您可以在此之前编辑(即删除、重新排序等)计划。这非常方便。实际上,我很少在没有-I的情况下使用rebase,因为我倾向于将分支的顺序误认为--on/etc参数,最好先检查计划。