我有一个提交,我已经存储在一个分支中,因为这应该只发送到一个特定的框。
我已将它合并到分支主服务器,但不是我在本地使用的分支dev。
现在,我错误地将master合并到dev,并将此提交引入了dev。
我知道可以git revert sha,to branch dev;但是因为这将引入一个撤消提交的提交(我猜,我还没有完全尝试过这个),当我合并master时,这个提交也会撤消吗?
如果是,如何仅从分支dev撤消此提交。
哦,git reset HEAD^1
--hard不是一个选项,因为在不需要的提交之后,master上还有其他提交。
如果再次重新设置并且apply是唯一的选项,那么除了不需要的提交之外,我如何才能合并那些来自master的额外提交。
更新
这是提交树。看起来很复杂我已经指出了我在开发中不需要的提交。 (我也删除了任何个人身份信息,感谢理解。截图gitk比ascii艺术要简单得多。)
提前致谢!
答案 0 :(得分:17)
在分支的临时副本git rebase --interactive
上,删除不需要的提交。或者,您可以在不需要的提交的上游创建一个新分支,并在其上git cherry-pick
提交所需的提交。
可能有更多方法可以实现这一目标。
答案 1 :(得分:2)
git reflog,然后git reset --hard是你的朋友撤消错误。
为了在合并分支时避免单个提交,这就是我刚在项目中使用的内容:
确定R0(R1)之前提交的提交
git merge <R1>
git merge -s ours R0
git merge B