专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

带你搞懂git回滚代码(实例详解)

来源:小易整编  作者:小易  发布时间:2024-03-21 07:40
摘要:本篇文章给大家带来了关于git回滚代码的相关知识,git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,希望对大家有帮助。在日常coding的过程中免不了分支之间的合并,回滚、提交、打tag等操作,如果你现...

本篇文章给大家带来了关于git回滚代码的相关知识,git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,希望对大家有帮助。

带你搞懂git回滚代码(实例详解)

在日常coding的过程中免不了分支之间的合并,回滚、提交、打tag等操作,如果你现在还不知道怎么使用git工具回滚代码,或者总是担心出错没有把握怕把代码搞丢,这很危险毕竟代码搞丢是很大的事情小则扣绩效重则多扣点,但是 dont worry,你很幸运能看到这篇文章,当你看完以后就不会在有代码丢失的情况,因为我会带你手把手建分支模拟回滚的常见情况

介绍

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

前言

在日常的代码回滚中常用的有两种方式git revertgit reset来进行回滚,这两种分别对应的不同的情况我尽量简单明了的介绍这两个命令都能做些什么,接下来我会从个人仓库新拉个分支从0开始,建两个分支,分别是主分支master和开发分支develop来进行模拟

reset介绍

1、reset的作用是当你希望提交的commit从历史记录中完全消失就可以用

2、比如你在master分支提交了A-->B-->C提交了三个记录,这个时候如果C记录有问题你想回滚到B就可以用git reset进行

3、这个命令大概率的情况都是用在我们主分支的,因为我们上线的分支一般是master分支然后从develop进行功能开发

4、开发完成之后将分支合并到master,如果在上线之前发现合并的分支用问题可以将develop合并过来的分支进行回滚

5、说白了就是取消develop的本次合并

6、但是有一种情况就是协作开发的时候大家都合并到master之后就不能用reset强行回滚commit因为这样会把其他人的提交记录给冲掉,这时候就可以用revert来进行操作我们在下面说

制造一个分支模拟环境

1.从你自己的git仓库创建一个新项目之后拉到本地

2.创建一个index.js随便写点东西,之后提交到仓库

3.我们在终端使用git log查看commit可以看到目前只有一个刚才提交的commit

4.我们从master分支迁出一个develop分支git branch develop,并且切换到该分支 git checkout develop

5.在develop分支新增一段代码,这个时候develop的commit记录就新增了一条B的记录

6.在develop分支接着新增一段代码

7.看下develop分支和master分支最新的commit记录对比,可以看到dev分支领先master分支两个commit

注意这里有个问题当你进行分支合并的时候,有时候会发现虽然代码不一样但是在进行分支合并的时候就提示代码没有更新,就是因为当前的开发分支的commit记录是落后于要合并的目标分支的,造成这种情况的原因就是reset滥用造成的,所以reset一定要慎用

操作一下reset来感受一下

1.我们将develop分支的代码合并到master,切换到master分支 执行git merge develop

2.我们在master分支使用git log查看commit记录找到B记录,准备回滚这一条,回滚的时候不需要输入全部的commid一般是前7位就够用

3.重点来了我们使用git reset 69fde2c进行回滚,这个时候查看log记录发现最后一条新增c记录没有了,这里还有个问题如果直接使用git push推送会有以下提示。

这是因为本地的记录因为我们的回滚已经落后于仓库的代码了,这个使用需要使用git push \-f进行强制提交

4.这个时候master分支就剩下A和B的commit记录了,到这里就是一次完整的reset回滚记录,之后我们还是可以继续正常把develop分支合并到master的

revert介绍

1、revert的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险

2、revert可以抵消上一个提交,那么如果想要抵消多个需要执行 git revert 倒数第一个commit id 倒数第二个commit

3、这个就常用于当你提交了一次commit之后发现提交的可能有问题就可以用到revert

4、还有一种情景是已经有很多人提交过代码,但是想改之前的某一次commit记录又不想影响后面的也可以使用revert,他会把你后面提交的记录都放到工作区只是合并的时候需要注意一点

我们来模拟一下环境

1.切到develop分支现在该分支有三个commit记录

2.我们使用rever进行回滚试一下git revert 16083ce,如果你也用的是vs code可以看到工作区的变化,并且在控制台可以提交默认的commit

3.看一下log记录,可以看到新增了一个记录Revert 新增C,并且原来的新增C还是在的

commit记录打tag

1、在上线之前我们需要对当前的commit记录打一个tag方便上线的代码有问题可以及时回滚

我们来介绍一下常用的几个命令

1.git tag列出所有的tag列表

2.创建一个tag,使用git tag [name],我们新增一个 git tag 测试4,在使用git tag 查看一下

3.查看tag对应的commit信息,git show [tag名字],举个例子git show 测试1,上线之后如果有问题我们就可以根据 下图的commit id进行代码回滚

结束

git管理工具在我们日常中可以说是天天都在用,所以对于常见的问题场景对应的方法一定要牢牢地掌握免得遇到的时候显得捉襟见肘

推荐学习:《Git教程》

以上就是带你搞懂git回滚代码(实例详解)的详细内容,更多请关注易企推科技其它相关文章!


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/1151995.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


网络知识
小编:小易整编
相关文章相关阅读
  • win7升级错误代码80072efe该怎么办win7升级错误代码80072efe解决...

    win7升级错误代码80072efe该怎么办win7升级错误代码80072efe解决方案

    win7客户在系统更新的过程中遇到了80072efe的报错,像这种状况要怎么办呢?你先清查网络问题,然后去微软官网下载代理,假如你用的是32位计算机就免费下载32位代理,安装下载完成后马上重启。假如再次出现升级不正确得话,你也就再去官方网站...

  • 修复:在 Xbox 应用上的 Halo Infinite(Campaign)安装错误...

    修复:在 Xbox 应用上的 Halo Infinite(Campaign)安装错误代码 0X80070032、0X80070424 或 0X80070005

    haloinfinite(campaign)是一款第一人称射击视频游戏,于2021年11月推出,可供单人和多用户使用。该游戏是halo系列的延续,适用于windows、xboxone和xbox系列的用户x|s。最近...

  • git怎么合并分支代码

    git怎么合并分支代码

    git合并分支代码的方法:1、使用“gitmerge”命令,该命令用来做分支合并,可以将其他分支中的内容合并到当前分支中。2、使用“gitrebase”命令,该命令用于改变当前的分支的基点,进而实现分支合并。本教程操作环境:Window...

  • 什么是构造函数?详解JavaScript中的构造函数

    什么是构造函数?详解JavaScript中的构造函数

    作为原型和原型链的基础,先了解清楚构造函数以及它的执行过程才能更好地帮助我们学习原型和原型链的知识。本篇文章带大家详细了解一下javascript中的构造函数,介绍一下怎么利用构造函数创建一个js对象,希望对大家有所帮助!一个普通的函数被用...

  • 什么是Linux系统中nc命令?nc命令的用法详解

    什么是Linux系统中nc命令?nc命令的用法详解

    这篇文章主要介绍了linux系统中nc命令的基本用法,nc命令非常之强大,这里先简单介绍它用来作端口扫描以及文件传输等的基础使用。功能说明:功能强大的网络工具,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小...

  • Java中的Scanner操作详解

    Java中的Scanner操作详解

    scanner是java中的一个常用类,用来读取控制台或文件中的输入数据。它提供了一种简单的方式来解析基本类型和字符串,并支持对正则表达式进行匹配。Scanner类位于java.util包中,因此在编写程序时需要import...

  • HTML代码如何格式化

    HTML代码如何格式化

    HTML代码可以通过sublime中的内置命令Reindent对代码格式化,还可以安装HTML-CSS-JSPrettify插件对代码格式化有时候我们将别人的代码复制过来的时候发现代码排列的非常杂乱无章,无法去阅读代码,今天就将和大家介绍...

  • 微信公众号错误代码10003怎么解决?

    微信公众号错误代码10003怎么解决?

    微信公众号错误代码10003解决的办法:首先登录微信公众号平台,点击【公众号设置--功能设置】,查看域名跟微信端访问的域名是否一致;然后在微擎后台公众号自定义菜单里修改微信端访问域名;最后确认修改即可。微信公众号错误代码10003解决的办法...

  • 周排行
  • 月排行
  • 年排行

精彩推荐