git:在合并之前移动提交

ebo*_*osi 5 git merge

我的历史树目前看起来像这样: 在此输入图像描述

我想将commit b3应用于分支主服务器.当然,我可以再次合并分支featuremaster,但历史将显得凌乱的两个合并提交(a6a4现在只是无用的): 在此输入图像描述


因此,我想知道的是,a4现在如何指出b3而不是b2 在此输入图像描述 我承认SHA1旨意是不同的,因此,提交都会被重新命名a4',并a5'

pok*_*oke 4

从主分支,您可以简单地重新建立新的基础,同时使用以下选项(或简而言之)b3保留合并:--preserve-merges-p

\n\n
git rebase -p feature\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样,当 Git 变基时,它不会尝试压平合并,而是在新的基础提交之上重新创建它。所以你的历史记录将如下所示:

\n\n
                               master\n                                 \xe2\x86\x93\na1 -- a2 -- a3 --------- a4\' -- a5\'\n        \\                /\n         \\              /\n          b1 -- b2 -- b3\n                      \xe2\x86\x91\n                   feature\n
Run Code Online (Sandbox Code Playgroud)\n\n

与不使用该标志时的以下内容相比--preserve-merges

\n\n
                                      master\n                                        \xe2\x86\x93\na1 -- a2                 a3\' -- a4\' -- a5\'\n        \\                /\n         \\              /\n          b1 -- b2 -- b3\n                      \xe2\x86\x91\n                   feature\n
Run Code Online (Sandbox Code Playgroud)\n