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如何正确回滚代码的更多相关文章
-
Jenkins通过git tags进行回滚代码
配置Jenkins获取git tag代码的方式其实方法很多,目前我使用比较多的主要是通过Git Parameter 来配置动态的获取最新tags代码,主要我们首先需要安装一下Git Parameter ...
-
git用法之[回滚代码]
我们在写代码的任何过程中,都有可能出错,任何过程都有可能要!回!滚!代!码!事关重大!一定要详细讲讲. 一.关于 工作区.暂存区.本地分支: 工作区:即自己当前分支所修改的代码,git add xx ...
-
Git如何回滚代码?
摘要: 多年以后,你面对一个需要回滚的Git仓库,准会想起这篇博客. 某一天,用户跟我反馈,他不能分配任务了.我去看了一下Fundebug捕获的报错信息: 可知,出错原因是前端发送的请求参数有问题.这 ...
-
git push之后回滚(撤销)代码
问题描述:首先,先说明一下,为什么会引发这次的话题,是这样的,我做完功能Agit push之后,2个月后需求部门要求不要功能A了,然后需要在没有功能A的基础上开发,怎么办?赶紧回滚代码呀. 然后我用g ...
-
git 版本库回滚(转载)
From:http://www.cnblogs.com/qualitysong/archive/2012/11/27/2791486.html From: http://www.tech126.com ...
-
Git 使用revert回滚已提交的commit
在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit. 回滚最新一次的提交记录: git revert HEAD 回滚前一次的 ...
-
GIT版本库回滚【图文版】
git 版本库回滚,在实际开发过程中总会遇得到 1. 先找出需要回滚的commitid git log -3 2. 重置本地版本库到指定commitid, 注意:本地改动将丢失 ...
-
svn上想回滚代码怎么办?——svn merge 命令
小博客断更了很久,最近想接着尝试建立写作的习惯,把自己工作生活遇到的有用知识沉淀下来.尽管微信公共账号比较火,但个人觉得这种不能用搜索引擎检索的东西完全就是历史的倒退,就像 RSS 这种提高信息传播效 ...
-
Git误操作 git reset强制回滚 恢复commit方法
参考: 找回Git中丢失的Commit Git误操作 git reset强制回滚 恢复commit方法 使用Git时,常有误操作,在Commit之后又执行了git reset --hard HEAD强 ...
随机推荐
-
部分安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
前端JS中使用XMLHttpRequest 2上传图片到服务器,PC端和大部分手机上都正常,但在少部分安卓手机上上传失败,服务器上查看图片,显示字节数为0.下面是上传图片的核心代码: HTML < ...
-
几百万的数据,mysql快速高效创建索引
有一个问题,一张表有3百万条记录,随着时间的增加,记录量会更多,此时查询速度很慢.在创建此表前没有未相应字段添加索引,所以此时需要为表添加索引.但是因为数据量大的原因,索引添加不成功,想了很多办法,终 ...
-
VIM移动
VIM移动 断断续续的使用VIM也一年了,会的始终都是那么几个命令,效率极低 前几个星期把Windows换成了Linux Mint,基本上也稳定了下来 就今晚,我已经下定决心开始新的VIM之旅,顺 ...
-
浅谈Block传值-匿名函数(代码块)
block传值是从后往前传值---代理也是 // 使用block时, 不能访问self, 也不能直接访问属性, self.属性, 用self调用方法; 只要这样做了, block都会对其强引用一份, ...
-
Git 介绍
一,理解 Git 1,分布式版本控制 Git 版本控制系统的设计思想是"去中心化".传统的 CVS .SVN 等工具采用的是 C/S 架构,只有一个中心代码仓库,位于服务器端.而一 ...
-
newlisp 接受jenkins带空格的参数
jenkins有一个参数text种类,它能够以文本的段落拷贝作为参数 newlispThe program receives parameters are separated by spaces, 更 ...
-
JAVA常识积累
java Class<? extends Object> getClass() 这么写是什么意思 Class<? extends Object> 泛型Object以及Objec ...
-
Akka.net 性能测试兼使用小技巧
最近想研究一下分布式开发,先拿了akka.net 跑一下性能 参考自己写个网络实现,一般在本机通讯,300M每秒的传输率,作为参考 嗯,先说结果,用Akka.net直接发bytearray,最后也只有 ...
-
Latex ";Error: File ended while scanning use of \@xdblarge";
Latex 编译时出现 Error: File ended while scanning use of \@xdblarge" 是因为少了一个 }...
-
POJ 3126 - Prime Path - [线性筛+BFS]
题目链接:http://poj.org/problem?id=3126 题意: 给定两个四位素数 $a,b$,要求把 $a$ 变换到 $b$.变换的过程每次只能改动一个数,要保证每次变换出来的数都是一 ...