如何在git中重新排序最后两个提交?

noi*_*isy 25 git

我想重新排序git中的最后两个提交:

现在我有:

$ git lg --oneline -4
1e0ecba (HEAD, my-branch) Fix for T255
82d45dc django_extensions
af3953b improvements according to CR
dae63ff Fullscreen support
Run Code Online (Sandbox Code Playgroud)

我希望有:

$ git lg --oneline -4
82d45dc (HEAD, my-branch) django_extensions
1e0ecba Fix for T255
af3953b improvements according to CR
dae63ff Fullscreen support
Run Code Online (Sandbox Code Playgroud)

noi*_*isy 35

一般情况下你必须使用git rebase --interactive- 这里是详细解答如何重新排序任意数量的提交:

但是如果你想重新排序最近两次提交,你可以使用这个git别名:

添加到~/.gitconfig:

[alias]
    reorder = "!GIT_SEQUENCE_EDITOR=\"sed -i -n 'h;1n;2p;g;p'\" git rebase -i HEAD~2"
Run Code Online (Sandbox Code Playgroud)

然后:

$ git reorder
Rebasing(2/2)
Successfully rebased and updated refs/heads/my-branch.
Run Code Online (Sandbox Code Playgroud)

  • 我个人坚持只是一个简单的香草交互式rebase. (15认同)
  • @TimBiegeleisen 我需要这个别名,因为我喜欢在上次提交中对代码进行一些个人调整。在开发过程中,当我创建新的提交时,我需要重新排序 my-special-commit 以将其保留为最后......如果我想推送它,我会这样做: git push origin HEAD~1:my-branch (2认同)
  • 要使其在macOS系统上工作,请使用“ sed -i” -n”而不是“ sed -i -n”。 (2认同)

Jim*_*Aho 31

我真的建议阅读这个关于如何重新排序提交的答案,之后你会感觉像是一个git摇滚明星,我保证.


除此之外,这里是你如何使用一个简单的rebase(假设你站在你想要改变的分支上):

git rebase -i HEAD~2

接下来,在提示中更改提交的顺序.

pick f4648aee My first commit
pick 00adf09a My second commit
Run Code Online (Sandbox Code Playgroud)

pick 00adf09a My second commit
pick f4648aee My first commit
Run Code Online (Sandbox Code Playgroud)

令人难以置信的是,如果你问我,它可以那么简单.

  • 快速、简单且直观。很好的答案! (4认同)

JBa*_*lin 6

假设没有冲突:

  • git rebase -i HEAD~4
  • 重新排序提交 + 保存