回滚

git 回滚

匿名 (未验证) 提交于 2019-12-03 00:19:01
3、去除历史记录区,commit 了 但还没有push : 切换为head的前1版本 git reset --hard HEAD^^ 切换为head的前2版本 备注: 上面常见三种类型 --mixed 会保留源码,只是将git commit和index 信息回退到了某个版本. --soft 保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可. --hard 源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码) 当然有人在push代码以后,也使用 reset --hard <commit...> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权是冲突..... 所以,这种情况你要使用下面的方式 4、已经push了 对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令 revert git revert用于反转提交,执行evert命令时要求工作树必须是干净的. git revert用一个新提交来消除一个历史提交所做的任何修改. revert 之后你的本地代码会回滚到指定的历史版本,这时你再

事务在执行过程中报错的处理方式

匿名 (未验证) 提交于 2019-12-03 00:18:01
1.系统在默认情况下: BEGIN TRAN; INSERT INTO dbo.Material_PO_PipeMaterialOrder ( ID , OrderNO , OrderName , Status , RMDSC ) VALUES ( NEWID() , N'测试自动回滚' , N'测试自动回滚' , 9999999999999999999 ,--字段类型是int,但9999999999999999999超过int的最大值,会溢出报错 N'测试自动回滚' ); UPDATE dbo.Material_PO_PipeMaterialOrder SET OrderNO = '测试自动回滚'; COMMIT TRAN; 执行消息: 消息 8115,级别 16,状态 2,第 3 行 将 expression 转换为数据类型 int 时出现算术溢出错误。 语句已终止。 (54 行受影响) 可以看出:Insert语句报错后,系统继续执行后面的Update语句(有行数受影响),没有回滚事务 BEGIN TRAN; INSERT INTO dbo.Material_PO_PipeMaterialOrder ( ID , OrderNO , OrderName , Status , RMDSC ) VALUES ( NEWID() , N'测试自动回滚' , N'测试自动回滚' , ,

svn回退到某一版本

匿名 (未验证) 提交于 2019-12-03 00:15:02
1 、保证我们拿到的是最新代码: svn update 假设最新版本号是 28 。 2 、然后找出要回滚的确切版本号: svn log 假设根据 svn log 日志查出要回滚的版本号是 25 ,此处的 something 可以是文件、目录或整个项目 如果想要更详细的了解情况,可以使用 svn diff - r 28 : 25 "" 3 、回滚到版本号 25 : svn merge - r 28 : 25 "" 为了保险起见,再次确认回滚的结果: svn diff "" 发现正确无误,提交。 4 、提交回滚: svn commit - m "Revert revision from r28 to r25,because of ..." 提交后版本变成了 29 。 分类: 软件使用 svn 转自: https://www.cnblogs.com/helloweworld/p/4024605.html 来源:博客园 作者: xh_Blog 链接:https://www.cnblogs.com/xh_Blog/p/11684393.html

svn回退到某一版本

匿名 (未验证) 提交于 2019-12-03 00:15:02
1、保证我们拿到的是最新代码: svn update 假设最新版本号是28。 2、然后找出要回滚的确切版本号: svn log 假设根据svn log日志查出要回滚的版本号是25,此处的something可以是文件、目录或整个项目 如果想要更详细的了解情况,可以使用svn diff -r 28:25 "" 3、回滚到版本号25: svn merge -r 28:25 "" 为了保险起见,再次确认回滚的结果: svn diff "" 发现正确无误,提交。 4、提交回滚: svn commit -m "Revert revision from r28 to r25,because of ..." 提交后版本变成了29。 分类: 软件使用svn 转自: https://www.cnblogs.com/helloweworld/p/4024605.html 来源:博客园 作者: xh_Blog 链接:https://www.cnblogs.com/xh_Blog/p/11684393.html

git学习(十) idea git reset 操作

匿名 (未验证) 提交于 2019-12-03 00:11:01
  git reset 是回滚操作,在 idea 中使用如下:                            Reset Type 有三种: Mixed 默认方式, 只保留源码,回退 commit 和 index 信息 Soft 回退到某个版本,只回退了 commit 的信息, 之前写的代码还是保留的 ,不会恢复到 index file 一级。如果还要提交,直接 commit Hard 彻底回退,本地源码也会变成上一个版本内容, 不保留之前 commit 的代码     To Commit 是回滚到哪个版本,例如,HEAD 为当前版本,HEAD^ 为上一个版本;     使用 git reset 回滚一般使用默认的 mixed 或者粗暴的 hard 方式; 来源:博客园 作者: 街头卖艺的肖邦 链接:https://www.cnblogs.com/coder-zyc/p/11567630.html

库存,订单,积分的分布式事务

匿名 (未验证) 提交于 2019-12-03 00:09:02
一个订单支付之后,我们需要做下面的步骤: 更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 减库存的业务实现 减库存可以采用 同步调用 (Feign的方式),也可以采用 异步调用 (RabbitMQ传递消息),我们这里采用同步调用,接下来我们分析为什么 如果我们采用异步调用的方式,减库存的这条消息发送到MQ就不管了,那么到底库存减成功了没有呢?这我们并不知道,如果库存不足,那么我们减库存失败,但是service的业务不会回滚,这个问题就是分布式事务问题,即跨服务的事务。减库存这个业务从订单微服务跨越到了商品微服务,而事务是由Spring来管理的,两套tomcat两套Spring,本身没有任何关联,但是却是一个事务,如果采用异步,这边的微服务执行失败另一边的微服务并不知道,破坏了事务的一致性,我们解决的方案是什么呢? 变异步调用为同步调用,如果一个微服务执行失败就会抛出异常,事务自然回滚(减库存的操作只能放在创建订单业务的最后,因为减库存执行失败事务自然回滚订单也不会创建成功,但是如果上来就先减库存,那玩意订单创建失败库存无法回滚),但是这种方案也不是最优的,因为我们没做优惠券功能,当我们做了优惠券功能,那计算优惠和减库存哪个放在最后呢?哪个放在最后都不可行,这时候就必须解决分布式事务问题了 解决分布式事务问题: 2PC(两阶段提交) : 第一阶段

C# 事务的创建,提交和回滚

匿名 (未验证) 提交于 2019-12-03 00:03:02
在C#中开启事务的步骤 01.调用SqlConnection对象的BeginTransaction()方法,创建一个SqlTransaction对象,标志事务开始。 02.将创建的SqlTransaction对象分配给要执行的SqlCommand的Transaction属性。 03.调用相应的方法执行SqlCommand命令。 04.调用SqlTransaction的Commit()方法完成事务。或调用Rollback()方法终止事务。 4.在进行事务操作中的注意点 01.在调用BeginTransaction()方法开始事务之前,要打开数据库连接,否则出现异常。 02.如果在事务的Commit()方法或RollBack()方法执行前数据库连接断开或关闭,则事务将回滚。 //准备连接字符串 string str = "data source=.;initial catalog=Myschool;uid=sa;pwd=123" ; //创建数据库连接对象 SqlConnection con = new SqlConnection ( str ); //sql语句:添加一条记录到年级表 string sql = "insert into grade values(@gradename)" ; //创建SqlParameter对象,设置参数 SqlParameter sp = new

系统学习消息队列分享(五) 如何利用事务消息实现分布式事务?

匿名 (未验证) 提交于 2019-12-02 23:56:01
一说起事务,你可能自然会联想到数据库。的确,我们日常使用事务的场景,绝大部分都是在操作数据库的时候。像 MySQL、Oracle 这些主流的关系型数据库,也都提供了完整的事务实现。那消息队列为什么也需要事务呢? 其实很多场景下,我们“发消息”这个过程,目的往往是通知另外一个系统或者模块去更新数据,消息队列中的“事务”,主要解决的是消息生产者和消息消费者的数据一致性问题。 依然拿我们熟悉的电商来举个例子。一般来说,用户在电商 APP 上购物时,先把商品加到购物车里,然后几件商品一起下单,最后支付,完成购物流程,就可以愉快地等待收货了。 这个过程中有一个需要用到消息队列的步骤,订单系统创建订单后,发消息给购物车系统,将已下单的商品从购物车中删除。因为从购物车删除已下单商品这个步骤,并不是用户下单支付这个主要流程中必需的步骤,使用消息队列来异步清理购物车是更加合理的设计。 对于订单系统来说,它创建订单的过程中实际上执行了 2 个步骤的操作: 在订单库中插入一条订单数据,创建订单; 发消息给消息队列,消息的内容就是刚刚创建的订单。 购物车系统订阅相应的主题,接收订单创建的消息,然后清理购物车,在购物车中删除订单中的商品。 在分布式系统中,上面提到的这些步骤,任何一个步骤都有可能失败,如果不做任何处理,那就有可能出现订单数据与购物车数据不一致的情况,比如说: 创建了订单,没有清理购物车;

@Transactional事务锁

匿名 (未验证) 提交于 2019-12-02 23:55:01
一、介绍 @Transactional是建立在AOP基础上的,它的本质是对方法的前后进行拦截,在目标方法开始前创建一个事务,在目标方法运行结束时根据运行的情况进行提交或者回滚操作。使用@Transactional不会对代码造成污染,使用起来简单便捷。 二、相关的配置 readOnly:该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。例如:@Transactional(readOnly=true); rollbackFor: 该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。例如:指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class}); rollbackForClassName: 该属性用于设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。例如:指定单一异常类名称@Transactional(rollbackForClassName=”RuntimeException”)指定多个异常类名称:@Transactional

git代码回滚

匿名 (未验证) 提交于 2019-12-02 23:55:01
先切换到指定分支:该分支必须是非受保护的分支,才能推送远程成功; 回滚到指定的版本 e377f60e28c8b84158 :指定的版; git reset -- hard e377f60e28c8b84158 ; git push - f origin 指定分支 来源:博客园 作者: 阿江大叔 链接:https://www.cnblogs.com/dongjiang/p/11413872.html