重新排序本地提交

Reorder local commits

我想在我的本地分支重新排序 git 提交,目前,我的分支看起来像这样。

x-x-x-x-x-x-x-0-1-2-3

现在我想把顺序改到下面

x-x-x-x-x-x-x-0-2-1-3 git怎么可能?

可以使用 git rebase -i 0 完成(0 是您示例中的修订 ID 0),您可以在那里重新排序应用修订的方式,但是如果您 真的 想要控制,可以这样做(假设分支叫A,指向3):

git checkout A~3
git cherry-pick A~1
git cherry-pick A~2
git cherry-pick A

如果您喜欢结果:

git branch -f A # point A where we are standing right now
git checkout A

就是这样。

您可以使用交互式变基:

git rebase -i HEAD~4

这将调出如下所示的编辑器:

pick 39vm3ie commit 0
pick md93ndj commit 1
pick 25sf3kd commit 2
pick 03kdoj3 commit 3

请注意,最后四个提交按顺序出现,从顶部的 oldest 到底部的 newest。由于您想更改 1 和 2 提交的顺序,您可以按如下方式重新排列它们:

pick 39vm3ie commit 0
pick 25sf3kd commit 2
pick md93ndj commit 1
pick 03kdoj3 commit 3

现在只需保存编辑器并关闭,这将启动变基。您可能必须在此过程中解决一些合并冲突,因为变基会重写历史。请注意,因为您正在重写历史记录,所以应该避免在 public 可能已被其他开发人员检出的分支上使用此选项。