git:在合并之前移动提交
我的历史记录树当前如下所示: 我想将提交git:在合并之前移动提交,git,merge,Git,Merge,我的历史记录树当前如下所示: 我想将提交b3应用于分支主机。当然,我可以再次将分支功能合并到主控中,但两次合并提交(a6,和a4,现在都没用了)会让历史看起来很混乱: 因此,我想知道的是如何使a4现在指向b3而不是b2? 我承认SHA1s将不同,因此提交将从主分支重命名为a4'和a5',您可以简单地重新基于新的b3,同时使用(或-p)保留合并: 这样,当Git重新调整基址时,它不会尝试平坦合并,而是在新的基本提交之上重新创建合并。因此,您的历史将如下所示:
b3
应用于分支主机。当然,我可以再次将分支功能
合并到主控
中,但两次合并提交(a6
,和a4
,现在都没用了)会让历史看起来很混乱:
因此,我想知道的是如何使
a4
现在指向b3
而不是b2
?
我承认
SHA1
s将不同,因此提交将从主分支重命名为a4'
和a5'
,您可以简单地重新基于新的b3
,同时使用(或-p
)保留合并:
这样,当Git重新调整基址时,它不会尝试平坦合并,而是在新的基本提交之上重新创建合并。因此,您的历史将如下所示:
master
↓
a1 -- a2 -- a3 --------- a4' -- a5'
\ /
\ /
b1 -- b2 -- b3
↑
feature
与不使用--preserve merges
标志时的以下情况相比:
master
↓
a1 -- a2 a3' -- a4' -- a5'
\ /
\ /
b1 -- b2 -- b3
↑
feature
从master,do
git-rebase-p b3
。这将保留合并,但将其移动到b3
@poke thx!我应该在a4
状态下执行此操作,或者如果我在a5
状态下执行此操作,它应该在这两个状态中的任何一个上执行。OP应该(并且,我看到,确实)注意,结果是一个新的(不同的)合并,具有不同的哈希和不同的树。正如您所说,rebase重新创建(即创建一个新的)合并来取代旧的合并。不管怎样,投票结果是一致的。:-)@torek是的,我使用x'
概念来表示它是基于原始x
:)重新创建的提交
master
↓
a1 -- a2 a3' -- a4' -- a5'
\ /
\ /
b1 -- b2 -- b3
↑
feature