如何在某个提交后拆分分支?



我已经在分支的末尾添加了一些提交,但是我认为它们最好放在一个单独的特性分支中。

我现在可以创建一个分支并恢复主分支中的更改,但这会创建一个混乱的历史,理想情况下,我希望在推送到远程存储库之前清理它。

有没有更好的方法从:

A-B-C-D-E

:

A-B-C
     
      D-E

如果我正确地在C分支?

不知道为什么每个人都想在这里做一个重置。你所需要做的就是在你当前的头部创建一个特性分支,然后将你的master重置回你想要的位置:

git branch feature
git reset --hard HEAD~2
  1. 创建新的分支HEAD git checkout:

    git checkout master
    git checkout -b branch

    创建包含master所有提交的新分支

  2. 用交互式git rebase:

    从master中删除DE提交

    git checkout master
    git rebase -i <SHA_A>

    在弹出的编辑器中,删除提交DE的行。
    如果您没有更改编辑器,那么它是Vim,因此点击j,直到您在commit D行上,然后键入dd以删除该行。与commit E行相同。完成后,键入:wq关闭编辑器。

完成了!

VIM快速参考卡可以在这里找到:http://tnerual.eriogerg.free.fr/vim.html

我猜你可以签出提交(git checkout sha),然后从那里(git checkout -b newbranch)分支。我还没有测试过。

EDIT:刚刚意识到您希望在提交之后将提交移动到新分支。我相信你想看的是git rebase

最新更新