我对我的git repo进行了一些更改,希望将其撤销。撤销快进合并
我的混帐回购协议是这样的:
A-B---- master
\ /
C-D * develop
我在develop
分支,忘记它从master
分支不同,在develop
做出了改变,把它合并进master
,然后推到我的远程(称为publish
)。
因为从B(共同祖先)开始,master没有变化,所以git做了一个快进合并。
现在,我的回购协议是这样的:
A-B-C-D master, develop, remotes/publish/master, remotes/publish/develop.
我想恢复上次合并,恢复master
到B.
从我在读How to undo last commit(s) in Git?,我用git reset sha-of-B
恢复我的master
分支版本B.
问题:
- 如何将
develop
恢复到修订版D? - 然后我如何将这些变化推回到远程/发布?
博客文章总结并详细介绍了我所做的,应该做的以及我如何解决这个问题:http://www.capnfabs.net/software/git-undoing-a-fast -forward合并,时-you-shouldve-just-used-a-new-branch/ –
@SnowCrash更新链接:http://capnfabs.net/blog/2013/01/14/git-undoing-a-fast-forward-merge/ –
对于唯一的开发者来说,这可能是好的,但对于那些合作,使用'revert'而不是'reset'更合理? – Snowcrash