在 Git 中变基时,我们通常可以将几个提交加入(fixup、squash(到底部的一个,例如A, B, C -> A'
(这里 B 和 C 比 A 更新(。这不是一个好的做法,因为您会看到工作的开始日期(提交 A(,但不是完成日期(提交 C(。就像您在 23.09.2019 上制作了一个功能,但没有在 25.09 上。
现在我们有几个提交,并希望将 A、B、C 修复为 C:A, B, C, D, E -> C', D', E'
。怎么做?
我会像这样进行
# We first point to C
git checkout C
# Then we "unpack" changes between A and C into the working tree
git reset --soft A
# Let's now create commit C'
git commit -m "Message for C' (so A,B and C)"
# and finally we just have to bring back copies of D and E
git cherry-pick D E