首页 > 解决方案 > 重新设置单个提交而不重播后续提交

问题描述

在以下设置中,我有两个分支 B1 和 B2

          [B1]
-o-o-d1-d2-d3 
      \
       c1-c2-c3  
            [B2]

我想将提交 c1 切换到 B1 以实现以下设置

-o-o-d1-c1-d2-d3
         \
          c2-c3

我知道我可以将 c1 挑选到第一个分支上。但如果我只在分支 B1 上更改了 c1,我的历史记录会更清晰。(我承认,这个问题可以看作是一个美学问题......但我希望 git 有一个很好的解决方案。)

标签: gitrebase

解决方案


你只需要做:

git checkout B1
git rebase c1

rebase 会将来自提交 c1 和分支 B1 之间的最后一个共同祖先的所有提交重新应用到 c1,即来自 d1(最后一个共同祖先)的 B1 中的所有提交。

在您的情况下,d2 和 d3。


推荐阅读