Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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 仅移动最后n个提交到其他分支_Git_Git Branch_Branching And Merging - Fatal编程技术网

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 <代码>,然后撤消在 BrnCH2中的最后两个提交。<代码>请考虑主分支已经存在< /代码>这个评论的目的是什么?不清楚为什么将branch2合并到master中会“无效”。要澄清这一点:

D2
不应该在master中,我不想为最后两次提交创建新的分支,而是直接将
D3
D4
移动到master。@Crypto愚人问如何挑选提交(不使用该术语)。。。这在技术上和逻辑上怎么都是错误的?我想你是在解读一个没有的问题,当然,当D3的散列应用于另一个父提交时,它会改变。@AD7six-如果“branch2”是一个私有分支,或者如果提交D3和D4还没有被推送,我同意你的看法。但问题中没有说明这一点。我想我应该把我的声明说得不那么强烈,而不是说做一次倒退总是错误的……重写历史。然而,正如您在评论中指出的,接受的答案不会导致问题中描述的回购状态,这仍然是事实;git重置—硬D2。恢复是有效的(甚至更可取),但值得一提的是,这意味着如果branch2合并到master中,D3和D4也将在master中恢复。将D3和D4保留在branch2中也没有问题/复杂性,因此这取决于总体意图。我同意@AD7six-这不会给出OP要求的结果,但可能是更正确的解决方案。见我对问题本身的评论。AD7six关于以后将
branch2
合并到
master
中的说法也是正确的。