我在分支的末尾添加了一些提交,但我已经决定在单独的功能分支中做得更好。
我现在可以创建一个分支并恢复主分支中的更改,但这会创建一个混乱的历史记录,理想情况下我想在推送到远程存储库之前清理它。
有更好的方法:
A-B-C-D-E
为:
A-B-C
\
D-E
好像我首先在C
正确分支?
答案 0 :(得分:7)
不确定为什么每个人都想在这里做一个改变。您需要做的就是在当前头部创建一个功能分支,然后将主设备重置回您想要的位置:
git branch feature
git reset --hard HEAD~2
答案 1 :(得分:1)
关闭HEAD
git checkout
:
git checkout master
git checkout -b branch
这将创建一个包含master
使用交互式git rebase
从主服务器中删除提交D
和E
:
git checkout master
git rebase -i <SHA_A>
在弹出的编辑器中,删除包含提交D
和E
的行。
如果您没有更改编辑器,那么它是Vim,所以点击 j 直到您使用提交D
,然后输入 d d 删除该行。与提交行E
相同。完成后,键入: w q 以关闭编辑器。
完成!
可在此处找到VIM快速参考卡:http://tnerual.eriogerg.free.fr/vim.html
答案 2 :(得分:0)
我猜你可以签出提交(git checkout sha
),然后从那里进行分支(git checkout -b newbranch
)。我没有测试过这个。
编辑:刚刚意识到您希望在提交后将提交移动到新分支。我相信你想要研究的是git rebase
。