搜索
首页开发工具git带你搞懂git回滚代码(实例详解)

本篇文章给大家带来了关于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随便写点东西,之后提交到仓库

892bcd38cb0be56928896aba6901a0bb.png

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

68f7620aacb6a05261a63763ab03fff9.png

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

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

8452ee398247562d096b1fce52f73b05.png

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

8db886b3e6324616d6df3288affc3d7e.png

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

65ce32a8faf80cfb05b8c491b4bede20.pnga3493d3516ff7afad13053680c2c29f1.png

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

操作一下reset来感受一下

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

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

5160a2005420978bcac99ed9e3c4ee3d.png

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

a41b46c6640f7c1236800c2b9935d084.png

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

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

129c0e052f9c49ece401198aaa4105df.png

revert介绍

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

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

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

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

我们来模拟一下环境

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

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

769984e8b268de9e7d810e78f1879e1c.png

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

4a1daf6769ae6e16423d7732f441be78.png

commit记录打tag

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

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

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

b263aaee2a0a6528d4ff55ede1e4f75a.png

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

4b1e4e2b5ccbc34d361435339def8a2c.png

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

fa92f17d2de3ef9d534d45ff077b7754.png

结束

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

推荐学习:《Git教程

以上是带你搞懂git回滚代码(实例详解)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:CSDN。如有侵权,请联系admin@php.cn删除
GitHub:管理项目,代码和版本历史记录GitHub:管理项目,代码和版本历史记录Apr 17, 2025 am 12:05 AM

GitHub可以高效管理项目。1)创建仓库并提交代码,2)使用分支和拉取请求协作开发,3)利用GitHubActions实现CI/CD,4)通过Issues管理任务,5)优化使用分支策略和代码审查,避免过度使用分支和忽视安全性。

git vs. github:探索他们的角色git vs. github:探索他们的角色Apr 16, 2025 am 12:06 AM

Git和GitHub是不同的工具:Git是一个分布式版本控制系统,用于管理代码版本和协作开发;GitHub是一个基于Git的在线平台,提供代码托管和协作工具。Git的主要功能包括版本管理、分支管理和协作开发,而GitHub则提供代码托管、协作工具和社交网络功能。

GitHub:开源和软件开发的枢纽GitHub:开源和软件开发的枢纽Apr 15, 2025 am 12:10 AM

GitHub是一个基于Git的版本控制系统托管平台,提供版本控制、协作开发和社区交流功能。使用GitHub可以提高开发效率和代码质量。

git and github:有什么关系?git and github:有什么关系?Apr 14, 2025 am 12:10 AM

Git和GitHub是不同的工具:Git是用于版本控制的软件,GitHub是基于Git的在线平台。1.Git允许你跟踪文件变化和协同开发。2.GitHub提供代码托管和协作工具,增强团队开发效率。

GitHub:开发人员和项目的平台GitHub:开发人员和项目的平台Apr 13, 2025 am 12:01 AM

GitHub的核心功能包括版本控制、分支管理、代码审查、问题跟踪和项目管理。1.版本控制与分支管理基于Git,允许追踪代码变更和实验性开发。2.代码审查通过PullRequest实现,提升代码质量和团队协作。3.问题跟踪与项目管理通过Issues和项目管理板进行,提高项目透明度和可追踪性。

行动中的github:示例和用例行动中的github:示例和用例Apr 12, 2025 am 12:16 AM

GitHub是提升软件开发效率和质量的强大工具。1)版本控制:通过Git管理代码变更。2)PullRequests:进行代码审查,提高代码质量。3)Issues:跟踪bug和项目进度。4)GitHubActions:自动化构建、测试和部署流程。

git vs. github:版本控制和代码托管git vs. github:版本控制和代码托管Apr 11, 2025 am 11:33 AM

Git是版本控制系统,GitHub是基于Git的代码托管平台。Git用于管理代码版本,支持本地操作;GitHub提供在线协作工具,如Issue跟踪和PullRequest。

什么是简单的话?什么是简单的话?Apr 09, 2025 am 12:12 AM

Git是一个开源的分布式版本控制系统,帮助开发者跟踪文件变化、协同工作和管理代码版本。它的核心功能包括:1)记录代码修改,2)回退到之前版本,3)协同开发,4)创建和管理分支进行并行开发。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)