如何还原分支上的最后提交,与其他分支合并并重新添加提交?

时间:2019-03-05 06:20:14

标签: git

我有以下问题。 git回购是在不久前分叉的。从此分支开始,进行了更改,但与此同时,原始存储库也进行了更多修改,如下所示:

A-B-C-D-E master
   \[fork]
    C'-D'-E'-F'-G'-H'-I'-J'----X' remote/master

重要的是要注意,前叉基本上是分离了主服务器和远程/主服务器。现在的问题是,我可以从远程/主机创建本地分支并将其直接与本地主机分支合并。但是,这将引起很多合并冲突,我想避免,因为这些冲突中的大多数与B之前的主软件包中的更改有关。因此,我最终需要做的是最后几次提交自分叉以来的主节点,并将它们放在remote / master分支的顶部。有可能吗?

1 个答案:

答案 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