带你搞懂git回滚代码(实例详解)
本篇文章给大家带来了关于Git回滚代码的相关知识,Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,希望对大家有帮助。
在日常coding的过程中免不了分支之间的合并,回滚、提交、打tag等操作,如果你现在还不知道怎么使用git工具回滚代码,或者总是担心出错没有把握怕把代码搞丢,这很危险毕竟代码搞丢是很大的事情小则扣绩效重则多扣点,但是 dont worry,你很幸运能看到这篇文章,当你看完以后就不会在有代码丢失的情况,因为我会带你手把手建分支模拟回滚的常见情况
介绍
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
前言
在日常的代码回滚中常用的有两种方式git revert
和git 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回滚代码(实例详解)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

要通过 Git 下载项目到本地,请按以下步骤操作:安装 Git。导航到项目目录。使用以下命令克隆远程存储库:git clone https://github.com/username/repository-name.git

更新 git 代码的步骤:检出代码:git clone https://github.com/username/repo.git获取最新更改:git fetch合并更改:git merge origin/master推送更改(可选):git push origin master

解决 Git 下载速度慢时可采取以下步骤:检查网络连接,尝试切换连接方式。优化 Git 配置:增加 POST 缓冲区大小(git config --global http.postBuffer 524288000)、降低低速限制(git config --global http.lowSpeedLimit 1000)。使用 Git 代理(如 git-proxy 或 git-lfs-proxy)。尝试使用不同的 Git 客户端(如 Sourcetree 或 Github Desktop)。检查防火

Git 代码合并过程:拉取最新更改以避免冲突。切换到要合并的分支。发起合并,指定要合并的分支。解决合并冲突(如有)。暂存和提交合并,提供提交消息。

Git Commit 是一种命令,将文件变更记录到 Git 存储库中,以保存项目当前状态的快照。使用方法如下:添加变更到暂存区域编写简洁且信息丰富的提交消息保存并退出提交消息以完成提交可选:为提交添加签名使用 git log 查看提交内容

在开发一个电商网站时,我遇到了一个棘手的问题:如何在大量商品数据中实现高效的搜索功能?传统的数据库搜索效率低下,用户体验不佳。经过一番研究,我发现了Typesense这个搜索引擎,并通过其官方PHP客户端typesense/typesense-php解决了这个问题,大大提升了搜索性能。

要删除 Git 仓库,请执行以下步骤:确认要删除的仓库。本地删除仓库:使用 rm -rf 命令删除其文件夹。远程删除仓库:导航到仓库设置,找到“删除仓库”选项,确认操作。

如何更新本地 Git 代码?用 git fetch 从远程仓库拉取最新更改。用 git merge origin/<远程分支名称> 将远程变更合并到本地分支。解决因合并产生的冲突。用 git commit -m "Merge branch <远程分支名称>" 提交合并更改,应用更新。
