Git 将分支的前n个提交合并到主节点

Git 将分支的前n个提交合并到主节点,git,merge,fast-forward,Git,Merge,Fast Forward,我有一个从最近提交到master的分支。分支上有两个提交。我想快速地将第一个提交合并到master上 我知道我可以摘樱桃,但如果我能帮忙的话,我真的不想把主枝分开 当前状态: Branch: +--->B--->C / Master: --->A 樱桃选择: Branch: +--->B--->C / Master: --->A--->B' 理想的选择: Branch:

我有一个从最近提交到
master
的分支。分支上有两个提交。我想快速地将第一个提交合并到master上

我知道我可以摘樱桃,但如果我能帮忙的话,我真的不想把主枝分开

当前状态:

Branch:       +--->B--->C
             /
Master: --->A
樱桃选择:

Branch:       +--->B--->C
             /
Master: --->A--->B'
理想的选择:

Branch:            +--->C
                  /
Master: --->A--->B
这可能吗

请注意,提交已全部推送到远程;但目前没有其他人可以访问此特定回购协议,因此推式f也可以


我似乎记得在签出分支时,可能有某种方法可以合并到master上。。。如果这是真的,我可以简单地签出commit B,然后以那种方式合并?

正如Raymond Chen评论的那样,所描述的问题的解决方案是
git merge B


我将把这个问题留一段时间,以防有人对标题中的问题有更一般的答案,即n次提交而不是1次提交。

更具体地说,您可能需要:

git merge --ff-only <commit-specifier>
分支
的提示提交比
的提示提交早八次-或者是?我想每个人都同意
A
master
早一个提交,而
B
早两个提交。但是
C
E
以及
D
F
C
领先三名,但
E
也领先三名;和
D
F
都领先四名。但是
G
并不比
master
领先五位:它似乎比master领先七位。同样地,
H
aka
branch
似乎比
master
领先八位

因此,如果我告诉您提前三次提交,您会选择提交
C
,还是
E
?你会给我一个错误,还是一个选择?为什么?

如果将事物约束到线性链,我们可以枚举“在”
master
branch
之间”的提交,不包括
master
和include
branch
,包括:

git rev-list --reverse master..branch

然后,列表中的第N个commit是要提交给
git merge--ff only
的提交散列。但是如果在这两点之间有分支和合并链,整个问题就会变得棘手。

来自master
git merge B
@RaymondChen该死,我是个白痴。如果你想回答这个问题,我可以接受它,它可能会帮助其他同样被3-O时钟击中的人?继续回答你自己的问题并接受它。我不需要假想的点。对于n次提交,你可以使用
git merge X
其中X在master之前是n次提交。
git rev-list --reverse master..branch