回滚

Git回滚代码到某个commit

女生的网名这么多〃 提交于 2019-11-27 15:59:40
回退命令: $ git reset --hard HEAD^ 回退到上个版本 $ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前 $ git reset --hard commit_id 退到/进到 指定commit的sha码 强推到远程: $ git push origin HEAD --force 来源: https://www.cnblogs.com/hukuangjie/p/11369434.html

git入门

血红的双手。 提交于 2019-11-27 13:49:45
参考 https://blog.csdn.net/web_csdn_share/article/details/79243308 一、GIT版本控制系统介绍 版本控制系统: 1、 记录历史版本信息(记录每一次修改的记录) 2、 方便团队相互之间协作开发 常用的版本控制系统: csv/svn: 集中式版本控制系统 git:分布式版本控制系统 git分布式:每个开发者本地就是一个代码管理仓库 使用git init创建一个本地项目仓库,这个项目仓库分为:工作区、暂存区和历史区。在工作区中写的代码提交到暂存区,然后通过暂存区提交到历史区,这样以后如果想要看原来的代码就可以从历史区中将某个版本信息回退到工作区。 如果是团队开发的话,和SVN一样,需要一个服务器,也就是git-hub。 git安装 git官网: https://git-scm.com/downloads 官网速度比较慢,可以在腾讯腾讯软件中心下载。 下载完成后,进行安装,默认安装即可。 二、git的工作原理 工作区:我们能看到的,并且用来写代码的区域。 暂存区:临时存储用的 历史区:生成历史版本 提交时候:工作区-》暂存区-》历史区 回滚的时候:可以从暂存区回滚到工作区;也可以从历史区直接回滚到工作区。注意,不能从历史区回滚到暂存区。 下面介绍git如何使用 1 git的全局配置 第一次安装完成git后

mysql事务回滚机制概述

烂漫一生 提交于 2019-11-27 13:06:34
应用场景: 银行取钱,从ATM机取钱,分为以下几个步骤 1 登陆ATM机,输入密码; 2 连接数据库,验证密码; 3 验证成功,获得用户信息,比如存款余额等; 4 用户输入需要取款的金额,按下确认键; 5 从后台数据库中减掉用户账户上的对应金额; 6 ATM吐出钱; 7 用户把钱拿走。 对于上面的取钱这个事情,如果有一步出现错误的话,那么就会取消整个取钱的动作,但是如果在第5步,系统后台已经把钱减了,但是ATM机没有取出来,那么就应用到mysql中的事务。简单地 来说,就是取钱这7步要么都完成,要么就啥也不做,在数据库中就是这个道理。 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销,在事务中,每个正确的原子 操作都会被顺序执行,直到遇到错误的原子操作。回滚的意思其实即使如果之前是插入操作的话,那么会执行删除之前插入的记录,如果是修改操作的话,那么会执行将update之前的记录还原。 因此,正确的原子操作是真正被执行过的,是物理执行。 事务是由一条或者多条sql语句组成,在事务的操作中,要么这些sql语句都执行,要么都不执行。 事务的ACID特性:原子性,一致性,隔离性,持久性。 在当前事务中确实能看到插入的记录,最后只不过被删除了,但是auto_increament不会删除而是改变值

数据库事务中的隔离级别和锁以及spring @Transactional注解参数详解

拈花ヽ惹草 提交于 2019-11-27 12:18:29
1.学习链接: https://www.cnblogs.com/xd502djj/p/10940627.htmlhttps://www.cnblogs.com/caoyc/p/5632963.htmhttps://www.cnblogs.com/chengshun/p/9778880.html 2.事物场景: https://blog.csdn.net/kiwi_coder/article/details/20214939 3.参数: 4.注意的几点:   1、@Transactional 只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能.   2、用 spring 事务管理器,由spring来负责数据库的打开,提交,回滚.默认遇到运行期例外(throw new RuntimeException("注释");)会回滚,即遇到不受检查(unchecked)的例外时回滚;而遇到需要捕获的例外(throw new Exception("注释");)不会回滚,即遇到受检查的例外(就是非运行时抛出的异常,编译器会检查到的异常叫受检查例外或说受检查异常)时,需我们指定方式来让事务回滚要想所有异常都回滚,要加上 @Transactional( rollbackFor={Exception.class,其它异常})

SpringBoot 中 @Transactional 的使用

六眼飞鱼酱① 提交于 2019-11-27 12:08:21
1.spring boot 中事物的使用 (当前指代的不是多数据源,只有一个数据源的前提下) <1> 在springboot 启动类上加上允许使用事物注解 @EnableTransactionManagement <2> 就这么简单的一个操作,更主要的是了解@Transactional 的一些特性,到底该怎么使用,什么时候使用。 事物的四个特性想必大家应该都知道,原子性(最小的整体,不可分割),一致性(都成功或都失败),隔离性(事物间互不干扰),持久性(保存的数据库)。 原子性 (atomicity):强调事务的不可分割。 一致性 (consistency):事务的执行的前后数据的完整性保持一致。 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰 。 持久性(durability) :事务一旦结束,数据就持久到数据库。 <3> 进到@Transactional 注解中看一下 propagation:该属性用于设置事务的传播行为。 isolation:该属性用于设置底层数据库的事务隔离级别,事务隔离级别用于处理多事务并发的情况,通常使用数据库的默认隔离级别即可,基本不需要进行设置 timeout:该属性用于设置事务的超时秒数(单位为秒),默认值为-1表示永不超时 readOnly:该属性用于设置当前事务是否为只读事务,设置为true表示只读

mysql 事务操作详细实例介绍

末鹿安然 提交于 2019-11-27 11:23:38
1、打开mysql 本人由于重装了系统之后,不能快速正确找到mysql客户端,所以需要使用cmd窗口来运行命令行程序。 如果在打开cmd窗口时就使用mysql命令,会出现如下错误: 这是由于没有目前还未进入mysql数据库,所以不能执行mysq命令,故需要进入mysql的bin目录来启动mysql,如下图: 然后就可以顺利执行mysql的命令行了。 2、创建数据库 创建一个数据库,名字为world,如下图: 3、创建表 在创建数据库world成功后,再在其中创建一张表,名为test1,如下图: 4、插入数据 在test1表中插入4条学生信息的数据,包括名字、学校,如下图: 5、事务操作–删除 5.1、开启事务 5.2、执行事务 下面执行的事务是删除一条学生信息数据: 5.3、回滚事务 6、事务操作–更新 具体步骤同上。 7、事务提交 如果在执行事务完毕后,用commit提交,那么再回滚rollback就不能回到之前的状态了。如下例: 事务提交 事务回滚 一开始数据库有4条数据,执行删除事务删除了一条数据,所以为3条数据,提交事务后表中的状态为3条数据,再执行回滚事务操作,此时会发现事务回滚之后表的数据和事务提交之后表的数据一样,为3条,所以说明回滚不到提交之前的状态了。 - 来源: CSDN 作者: Alice_yufeng 链接: https://blog.csdn.net

SSM框架中的事务和事务传播机制

元气小坏坏 提交于 2019-11-27 11:07:26
SSM框架的整合学到尾声了,最后的时候接触到了事务传播机制,有点多,就记下来吧 0.值得注意的坑(SSM事务回滚失效) 在 spring-mvc.xml 文件中,如果你配置包扫描的时候,是扫描项目下所有的包,比如这样(我的整个项目都在top文件夹下) 那么你的事务机制会出问题,因为 spring-mvc 是一个 子容器 , 不具有事务功能 ,而 spring-config 是 顶级父容器 , 有事务功能 ,如果你在spring-mvc.xml内扫描了处理事务的 service 类,会导致事务功能失效 所以,记得要排除掉处理事务的类,只需要把上面的代码改成 1 <context:component-scan base-package="top.**"> 2 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> 3 <!--这样设置之后就可以让这个子容器不加载servicer--> 4 </context:component-scan> 然后事务功能就正常了 1.事务的使用(只介绍注释方式) 在负责与数据库交互的方法前加上注释 @Transactional 这样这个方法调用时就会开启一个事务,方法结束时该事务结束 例子: 1

分布式场景常见问题及解决方案

感情迁移 提交于 2019-11-27 08:27:25
分布式场景常见问题及解决方案 前言: 本文主要是根据平常学习过程中遇到的一些分布式场景常见问题,并作出了解析,有不对或者需要补充的地方,希望广大的程序员朋友们及时改进,另外,想要学习,分布式的朋友,我提供一张分布式的学习路线思维导图,望可以给你们一点建议。 下面进入正题 一、分布式锁 分布式锁是在分布式场景下一种常见技术,通常通过基于redis和zookeeper来实现,本文主要介绍redis分布式锁和zookeeper分布式锁的实现方案和对比: (1)基于redis的普通实现 这个方案的加锁主要实现是基于redis的”SET key 随机值 NX PX 过期时间(毫秒)”指令,NX代表只有key不存在时才设置成功,PX代表在过期时间后会自动释放。 这个方案的释放锁是通过lua脚本删除key的方式,判断value一样则删除key。 使用随机值的原因是如果某个获取到锁的客户端阻塞了很长时间,导致了它获取到的锁已经自动释放,此时可能有其他客户端已经获取到了锁,如果直接删除是有问题的,所以要通过随机值加上lua脚本去判断如果value相等时再删除。 这个方案存在一个问题就是,如果采用redis单实例可能会存在单点故障问题,但如果采用普通主从方式,如果主节点挂了key还没来得及同步到从节点,此时从节点被切换到了主节点,由于没有同步到数据别人就会拿到锁。 (2)redis的RedLock算法

git本地以及远程分支回滚

江枫思渺然 提交于 2019-11-27 06:31:20
转: https://www.cnblogs.com/sunny-sl/p/11236280.html 1. git本地版本回退 Git reset --hard commit_id(可用 git log –oneline 查看) 2. git远程版本回退 git push origin HEAD --force #远程提交回退 下面的命令也可以实现远程版本回退 git reset --hard HEAD~1 git push --force 3. git reverse和git reset的区别 git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。 git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。 git reset +

Redis学习笔记#8:事务

两盒软妹~` 提交于 2019-11-27 04:44:57
相关命令DISCARD,EXEC,MULTI,UNWATCH,WATCH redis不支持回滚 基本使用示例MULTI EXEC 不支持回滚示例 t3的值成功赋值,没有回滚 WATCH 乐观锁 watch监控的key,若发生变动,则在事务中对其修改时,事务不执行 UNWATCH DISCARD 放弃事务 来源: https://www.cnblogs.com/sunang/p/11343749.html