Git提交错误后如何回退

在使用Git的时候需要维护一个自己的分支模型,推荐使用: http://nvie.com/posts/a-successful-git-branching-model/

总体说来有一下两点:

  • 在中央仓库保存两个永久分支,master && develop,master分支是发布分支,每次发布就是从master上打包发布,程序是不允许直接在master提交代码,只能通过其他分支合并到master分支。develop分支是开发分支,当develop上得源代码达到一个稳定状态的时候就可以把develop的代码合并到master上。
  • 除去master和develop这两个永久分支,还存在一些暂时的分支。
    • 线上的紧急Bug需要修复,这个时候就需要创建一个hotfix分支,这个分支是从master上检出,完成修复后双向合并到master和develop上,保证develop与master代码的同步,合并完后删除hotfix 分支。
    • 还比如,要开发一个新功能,这个时候需要创建一个feature分支,这个分支就从develop上检出,可以把这个分支推到服务器上让更多地人参与开发,当然也可以不推倒服务器上,只在本地开发,开发完成后合并到develop上。

下面这个是我们项目中的网络提交图:

这只是简单介说了一下分支模型,具体的介绍可以参考上面给出的链接。如果在提交的过程中直接在master上做了修改,或者不小心把master合并到了develop分支上,如何回退?

直接在master分支上修改代码并提交如何回退

如果直接在master分支上做了修改并提交到了服务器,这种操作在上面所描述的分支模型中是严格禁止的,如果出现这种情况如何回退:

  • 在本地切到master分支下,使用 git chenkout -b temp-branch,这样就从master分支上创建了一个新的临时分支,并且切到这个分支下。
  • git reset –hard commitpoint, 这个commitpoint代表你要回滚的提交点
  • git branch -D master , 这个操作是删除本地master分支
  • git push origin :master, 删除远程服务器上得master分支,这里的删除就是推送一个空分支到远程master上。但是注意的是远程master可能是一个default设置,这样服务器是不允许删除master分支,这个时候就需要在项目设置上将default标签切换到另一个分支上,上面的删除操作才能成功
  • 将远程分支删掉后需要把回滚后的分支推到远程服务器上,git push origin temp-branch:master,这样就能完成回退操作
  • 最后是删除temp-branch 分支,git checkout master, git branch -D temp-branch.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 12,767评论 1 26
  • 打开窗口 在窗口间移动 移动窗口 改变窗口大小
    helphi阅读 3,452评论 0 0
  • [TOC] 0x00 为什么要装(Bi) 装逼遭雷劈。 上一篇介绍了重装macOS的方法。为什么会有上一篇?说到底...
    ttdevs阅读 4,971评论 0 0
  • 健康当下炙手可热的话题,各行各业、甚至各个角落都会听到。 随着人类物质文明已经到过极限的时候,慢慢发现快乐、幸福越...
    悦元堂阅读 2,563评论 0 10

友情链接更多精彩内容