Git 合并在更改分支后提交

Git 合并在更改分支后提交,git,Git,我最初有两个分支: master A---B---C \ fork D---E---F---H---I 所以我想让我的分叉分支在F处合并到master,而不合并D和E。所以它变成: master A---B---C-------F---H---I \ fork D---E master A---B---C-------F---H---I

我最初有两个分支:

master A---B---C
                \
fork             D---E---F---H---I
所以我想让我的分叉分支在F处合并到master,而不合并D和E。所以它变成:

master A---B---C-------F---H---I
                \
fork             D---E
master A---B---C-------F---H---I
                                \
fork                             D---E
然后我希望能够将叉子重新设置为master,这样它就变成:

master A---B---C-------F---H---I
                \
fork             D---E
master A---B---C-------F---H---I
                                \
fork                             D---E
(不确定字母是否正确,或者是否应将其改为D'和E',并将旧字母保留在C之后)

所以我四处搜索,发现我可以在“I”处分支我的叉子,然后硬重置它,但它变得更加复杂:

master A---B---C
                \
fork             D---E
                      \
to-merge               F---H---I
(我现在就在这一点上)

请帮助一个分支的noob使其工作。即使是这样,我最终还是得到了这样的结果:

master A---B---C-------F---H---I
                \     /         \
fork             D---E           D'--E'

我根本不想把D和E合并到master中。

我想你可能想看看cherry picking

谷歌很快就发现了这一点。看起来很有用(和你需要的一样)

先去看看主人

$ git checkout master
然后每摘一颗樱桃都要这样

$ git cherry-pick F
Finished one cherry-pick.

我想你可能想看看樱桃采摘

谷歌很快就发现了这一点。看起来很有用(和你需要的一样)

先去看看主人

$ git checkout master
然后每摘一颗樱桃都要这样

$ git cherry-pick F
Finished one cherry-pick.

如果只有3个提交,那么最简单的方法可能是将它们挑选到主分支中

git checkout master
git cherry-pick F
git cherry-pick H
git cherry-pick I

如果只有3个提交,那么最简单的方法可能是将它们挑选到主分支中

git checkout master
git cherry-pick F
git cherry-pick H
git cherry-pick I

您的最终目标是线性化,为什么不直接使用
git-rebase-i
并根据需要重新排列它呢?@J-16SDiZ我从我的fork分支尝试了
git-rebase-i e8a3e6d8be9afd3aacc47232ee5cf6dc7080ce7
,但是它用几个文件打开了vim(我的路径中有空格),之后什么都没有做。有没有办法让它工作?@J-16SDiZ好的。我将本地回购移动到没有空格的路径。就我所能看到的,我可以摘和挤。。。后者将承诺与另一个结合起来。我无法理解如何将提交移动到另一个分支。@avioli:要在提交D之前移动提交F,只需剪切描述提交F的行,并将其粘贴到描述提交D的行上方。您的最终目标是线性化,为什么不直接使用
git-rebase-i
并将其重新排列到您需要的位置呢?@J-16SDiZ我尝试了我的fork分支中的
git-rebase-i e8a3e6d8be9afd3aa2cc47232ee5cf6dc7080ce7
,但它打开了带有多个文件的vim(我的路径中有空格),之后什么也没做。有没有办法让它工作?@J-16SDiZ好的。我将本地回购移动到没有空格的路径。就我所能看到的,我可以摘和挤。。。后者将承诺与另一个结合起来。我无法理解如何将提交移动到其他分支。@avioli:要在提交D之前移动提交F,只需剪切描述提交F的行,并将其粘贴到描述提交D的行上方即可。谢谢。这确实起到了作用,但问题是我必须全部挑选,而不仅仅是F。不用担心@avioli。是的,这将是你需要做的(这就是为什么我提到了每一个樱桃采摘),我只是在演示如何做谢谢这确实起到了作用,但问题是我必须全部挑选,而不仅仅是F。不用担心@avioli。是的,这将是你需要做的(这就是为什么我提到了每一个樱桃采摘),我只是在演示如何做谢谢我按照蓝莓的建议做了,发现我需要按照你的建议挑选它们,而不仅仅是F。谢谢。我按照蓝莓的建议去做,发现我需要按照你的建议去挑选它们,而不仅仅是F。