git如何正确回滚代码

方法一,删除远程分支再提交

①首先两步保证当前工作区是干净的,并且和远程分支代码一致

$ git co currentBranch
$ git pull origin currentBranch
$ git co ./

②备份当前分支(如有必要)

$ git branch currentBranchBackUp

③恢复到指定的commit hash

$ git reset --hard resetVersionHash //将当前branch的HEAD指针指向commit hash

④删除当前分支的远程分支

$ git push origin :currentBranch
$ //或者这么写git push origin --delete currentBranch

⑤把当前分支提交到远程

$ git push origin currentBranch

方法二,强制push远程分支

①首先两步保证当前工作区是干净的,并且和远程分支代码一致

②备份当前分支(如有必要)

③恢复到指定的commit hash

$ git reset --hard resetVersionHash

④把当前分支强制提交到远程

$ git push -f origin currentBranch

方法三,从回滚位置生成新的commit hash

①首先两步保证当前工作区是干净的,并且和远程分支代码一致

②备份当前分支(如有必要)

③使用git revert恢复到指定的commit hash,当前分支恢复到a>3版本(见下图)

a)此方法会产生一条多余的commit hash&log,其实1c0ce98和01592eb内容上是一致的

b)git revert是以要回滚的commit hash(1c0ce98)为基础,新生成一个commit hash(01592eb)

$ git revert resetVersionHash

④提交远程分支

$ git push origin currentBranch

方法四,从回滚位置生成新的分支merge

①首先两步保证当前工作区是干净的,并且和远程分支代码一致

②备份当前分支(如有必要)

③把当前工作区的HEAD指针指向回滚的commit hash(注意不是branch的HEAD指针)

Notice:这个时候工作区HEAD没有指向分支,称为匿名分支detached HEAD

这个时候提交commit后无法保存状态,git中的任何提交必须是在当前工作区HEAD所在分支的HEAD上进行push hash入栈,所以HEAD必须是属于某个分支的HEAD位置,提交才生效。

$ git co resetVersionHash

④以该commit hash创建一个新的分支

$ git co -b newRevertedHash

⑤切换到当前分支,合并newRevertedHash。

$ git co currentBranch
$ git merge newRevertedHash

⑥进行代码diff,完成代码回滚,push到远程currentBranch

Notice: 也可以直接hotfix,从要回滚的地方直接重新打包一个新tag包,发版本hotFixVersion即可。

git如何正确回滚代码的更多相关文章

  1. Jenkins通过git tags进行回滚代码

    配置Jenkins获取git tag代码的方式其实方法很多,目前我使用比较多的主要是通过Git Parameter 来配置动态的获取最新tags代码,主要我们首先需要安装一下Git Parameter ...

  2. git用法之[回滚代码]

    我们在写代码的任何过程中,都有可能出错,任何过程都有可能要!回!滚!代!码!事关重大!一定要详细讲讲. 一.关于 工作区.暂存区.本地分支: 工作区:即自己当前分支所修改的代码,git add xx ...

  3. Git如何回滚代码?

    摘要: 多年以后,你面对一个需要回滚的Git仓库,准会想起这篇博客. 某一天,用户跟我反馈,他不能分配任务了.我去看了一下Fundebug捕获的报错信息: 可知,出错原因是前端发送的请求参数有问题.这 ...

  4. git push之后回滚(撤销)代码

    问题描述:首先,先说明一下,为什么会引发这次的话题,是这样的,我做完功能Agit push之后,2个月后需求部门要求不要功能A了,然后需要在没有功能A的基础上开发,怎么办?赶紧回滚代码呀. 然后我用g ...

  5. git 版本库回滚(转载)

    From:http://www.cnblogs.com/qualitysong/archive/2012/11/27/2791486.html From: http://www.tech126.com ...

  6. Git 使用revert回滚已提交的commit

    在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit. 回滚最新一次的提交记录: git revert HEAD 回滚前一次的 ...

  7. GIT版本库回滚【图文版】

    git 版本库回滚,在实际开发过程中总会遇得到   1. 先找出需要回滚的commitid     git log -3   2. 重置本地版本库到指定commitid, 注意:本地改动将丢失     ...

  8. svn上想回滚代码怎么办?——svn merge 命令

    小博客断更了很久,最近想接着尝试建立写作的习惯,把自己工作生活遇到的有用知识沉淀下来.尽管微信公共账号比较火,但个人觉得这种不能用搜索引擎检索的东西完全就是历史的倒退,就像 RSS 这种提高信息传播效 ...

  9. Git误操作 git reset强制回滚 恢复commit方法

    参考: 找回Git中丢失的Commit Git误操作 git reset强制回滚 恢复commit方法 使用Git时,常有误操作,在Commit之后又执行了git reset --hard HEAD强 ...

随机推荐

  1. TForm类有关属性简介

    http://www.cnblogs.com/pchmonster/archive/2012/01/02/2310377.html

  2. HDU1896Stones(优先队列)

    Stones Time Limit : 5000/3000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submis ...

  3. Android MediaScanner 详尽分析

    [Innost]: http://blog.csdn.net/Innost/article/details/6083467 ====================================== ...

  4. gc CMSMaxAbortablePrecleanTime

    https://blogs.oracle.com/jonthecollector/ 链接打不开了,我记得里边说,这个参数是指定vm试图在它指定的时间间隔内等到一次小垃圾回收...minor gc, g ...

  5. source.list

    deb http://www.anheng.com.cn/debian/ squeeze maindeb-src http://www.anheng.com.cn/debian/ squeeze ma ...

  6. ural1855 Trade Guilds of Erathia

    Trade Guilds of Erathia Time limit: 2.0 secondMemory limit: 64 MB The continent of Antagarich was co ...

  7. HaiHongOJ 1003 God Wang

    题目连接:http://oj.haihongblog.com/problem.php?id=1003 线段树维护区间最小值,并且求解下标 #include <stdio.h> #inclu ...

  8. HTML 引用Css样式的四种方式

    不才,只知道HTML引用CSS样式有四种方式,内部引用和外部引用各两种,因为老是忘记细节,记下了随时翻阅亦可方便如我般的初学者 内部引用方式1: 直接在标签内用 style 引用,如: <div ...

  9. iomanip头

    #include <iomanip>主要是输入输出控制. Dec 十进制: hex 十六进制: oct 八进制: setw 设置宽度: setfill 设置填充值: setbase 将数字 ...

  10. jQuery动态绑定

    一.原始需求 在实际项目的时候,遇到了一个问题,就是通过JS动态生成的元素,无法触发JS事件. 原始的JS代码: $(function () { $(".original").cl ...