我已经在分支的末尾添加了一些提交,但是我认为它们最好放在一个单独的特性分支中。
我现在可以创建一个分支并恢复主分支中的更改,但这会创建一个混乱的历史,理想情况下,我希望在推送到远程存储库之前清理它。
有没有更好的方法从:
A-B-C-D-E
:
A-B-C
D-E
如果我正确地在C
分支?
不知道为什么每个人都想在这里做一个重置。你所需要做的就是在你当前的头部创建一个特性分支,然后将你的master重置回你想要的位置:
git branch feature
git reset --hard HEAD~2
-
创建新的分支
HEAD
git checkout
:git checkout master
git checkout -b branch
创建包含
master
所有提交的新分支 -
用交互式
从master中删除git rebase
:D
和E
提交git checkout master
git rebase -i <SHA_A>
在弹出的编辑器中,删除提交
D
和E
的行。
如果您没有更改编辑器,那么它是Vim,因此点击j,直到您在commitD
行上,然后键入dd以删除该行。与commitE
行相同。完成后,键入:wq关闭编辑器。
完成了!
VIM快速参考卡可以在这里找到:http://tnerual.eriogerg.free.fr/vim.html
我猜你可以签出提交(git checkout sha
),然后从那里(git checkout -b newbranch
)分支。我还没有测试过。
EDIT:刚刚意识到您希望在提交之后将提交移动到新分支。我相信你想看的是git rebase
。