繁体   English   中英

从一个git分支移至另一个,仅应用我的更改

[英]Moving from one git branch to another and applying only my changes

我分叉了一个项目(来自分支A),并且由于某种原因,它似乎在另一个分支(B)中继续进行。

我试图将叉子(M)与新分支(B)合并,但这导致了许多冲突。 发生冲突是因为新分支(B)分叉了较旧的分支(O),并且A的部分更改未提交给B。

现在,我希望所有更改(在分支M中)都与新分支B合并而不会发生冲突,取消A对分支M中的原点O所做的所有更改。

在此处输入图片说明

我想要的是红色。 我怎么做?

一种选择是从B分支中挑选在A提交之后发生的M分支中的提交范围:

git checkout B
git cherry-pick 2an38xma..f8s3kow2

这里2an38xmaM分支中A提交的SHA-1哈希或唯一标识符。 您可以通过在A分支中键入git log并向下滚动直到找到A提交来找到此提交哈希。 git cherry-pick使用的范围表示在A提交之后逐个应用提交,直到M分支中的最终提交f8s3kow2

请记住,每次提交可能会发生合并冲突。

首先使用git branch M.old M复制原始M分支,这样,如果事情最终不符合您的需要,您就可以轻松地重新开始。

然后,您可以重新设置M分支的基础,从B开始

git rebase --onto B A M

这应该给您图形中的红色M分支。

A标记您要考虑更改的起点(不包括), M标记端点(包括),该端点将更新为变基结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM