Git 仅移动最后n个提交到其他分支
我的结构目前如下所示:Git 仅移动最后n个提交到其他分支,git,git-branch,branching-and-merging,Git,Git Branch,Branching And Merging,我的结构目前如下所示: master A-B-C-D-E-F \ \ branch2 D2 - D3 - D4 master A-B-C-D-E-F-D3-D4 \ \ branch2 D2 我想将最后两个提交(D3和D4)从branch2移动到master,而不移动D2。所以它应该是这样的: master A
master A-B-C-D-E-F
\
\
branch2 D2 - D3 - D4
master A-B-C-D-E-F-D3-D4
\
\
branch2 D2
我想将最后两个提交(D3
和D4
)从branch2
移动到master,而不移动D2
。所以它应该是这样的:
master A-B-C-D-E-F
\
\
branch2 D2 - D3 - D4
master A-B-C-D-E-F-D3-D4
\
\
branch2 D2
如何做到这一点
请考虑主分支已经存在-我已经看到了几个合并到新分支的答案,但这在这里是无效的。
< P> >在Janez Kuhar的评论上扩展,你将做的是git checkout master
git cherry-pick D3
git cherry-pick D4
其中,D3
和D4
是提交的SHA
由于我们不希望重复提交,并且您表示希望从branch2中删除这些提交,因此我们将执行以下操作:
git revert D3^..D4
再次>代码> D3和<代码> D4<代码>为提交的SASS。<代码> >樱桃拾取<代码> >从<代码> BRACH2提交到<代码> Master <代码>,然后撤消在
不应该在master中,我不想为最后两次提交创建新的分支,而是直接将D2
和D3
移动到master。@Crypto愚人问如何挑选提交(不使用该术语)。。。这在技术上和逻辑上怎么都是错误的?我想你是在解读一个没有的问题,当然,当D3的散列应用于另一个父提交时,它会改变。@AD7six-如果“branch2”是一个私有分支,或者如果提交D3和D4还没有被推送,我同意你的看法。但问题中没有说明这一点。我想我应该把我的声明说得不那么强烈,而不是说做一次倒退总是错误的……重写历史。然而,正如您在评论中指出的,接受的答案不会导致问题中描述的回购状态,这仍然是事实;git重置—硬D2。恢复是有效的(甚至更可取),但值得一提的是,这意味着如果branch2合并到master中,D3和D4也将在master中恢复。将D3和D4保留在branch2中也没有问题/复杂性,因此这取决于总体意图。我同意@AD7six-这不会给出OP要求的结果,但可能是更正确的解决方案。见我对问题本身的评论。AD7six关于以后将D4
合并到branch2
中的说法也是正确的。 master