我有以下问题。 git回购是在不久前分叉的。从此分支开始,进行了更改,但与此同时,原始存储库也进行了更多修改,如下所示:
A-B-C-D-E master
\[fork]
C'-D'-E'-F'-G'-H'-I'-J'----X' remote/master
重要的是要注意,前叉基本上是分离了主服务器和远程/主服务器。现在的问题是,我可以从远程/主机创建本地分支并将其直接与本地主机分支合并。但是,这将引起很多合并冲突,我想避免,因为这些冲突中的大多数与B之前的主软件包中的更改有关。因此,我最终需要做的是最后几次提交自分叉以来的主节点,并将它们放在remote / master分支的顶部。有可能吗?
答案 0 :(得分:2)
如果有人遇到这个问题,我可以通过以下步骤解决该问题:
创建了一个仅包含所有提交A-E的新分支,并从master的历史记录中删除了最新的提交C-E:
git checkout master
git branch new_branch
git reset --hard HEAD~5
C-D-E new_branch
/
A-B master
\[fork]
C'-D'-E'-F'-G'-H'-I'-J'----X' remote/master
将master分支与remote / master合并,接受来自remote / master的所有更改:
git checkout remote/master
git merge -Xours master
C-D-E new_branch
/
A-B---------------------------
\[fork] \
C'-D'-E'-F'-G'-H'-I'-J'----X' remote/master, master
已检出的主服务器,并使用远程/主服务器进行了重新定位
git checkout master
git rebase remote/master
A-B---------------------------
\[fork] \
C'-D'-E'-F'-G'-H'-I'-J'----X' remote/master, master
\
C-D-E new_branch