Git回退实战之add和commit回滚

一、需求背景

初入职场,由于自己的失误或者对git不熟悉,把被人的代码给冲突掉了,然后需要立马回滚,对于新手开发,应该比较常见吧!或者,比较多一种情况,错误把工程add了到了暂存区,比如一些本地配置,本来就不应该提交的,又或者,开发中只提交部分代码,又想最新的提交合并到上一次提交,等等,很多种场景,我们都会用到git版本回退/回滚。接下来就各位初入职场的同学们讲一下如何代码回退/回滚,让同学们对代码回退/回滚不在恐惧。

二、Git版本回退/回滚实操

在实操演练前,我们需要去了解Git版本的一些理论知识:

版本管理的Git 有三种状态: 已提交(committed)、已修改(modified) 和 已暂存(staged)

  • 已修改:表示修改了文件,但还没保存到数据库中。
  • 已暂存:表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交:表示数据已经安全地保存在本地数据库中。

Git 项目拥有四个阶段:工作区、暂存区、 Git 目录、远程仓库(origin)

  • git add:是将工作区已修改的文件提交到暂存区
  • git commit:是将暂存区的文件提交到Git 目录
  • git push:就是将本地git目录的文件提交到远程仓库

1.add回退

错误把工程add了到了暂存区,比如一些本地配置,本来就不应该提交的,发现误添加了某个文件提交到了暂存区,可以通过以下命令撤回到工作区:

perl 复制代码
git reset HEAD <文件名>

如果想将所有暂存区的文件撤回到工作区:

perl 复制代码
git reset HEAD

2.commit回退

开发中只提交部分代码,又想最新的提交合并到上一次提交,但是又不想有两条提交记录,就可以回滚上一次代码,然后重新一起提交。

perl 复制代码
# 将暂存区最近一次提交到Git目录的文件全部撤回到暂存区
git reset --soft HEAD^

3.远程仓库版本回退

这种情况,是希望大家不要遇到,直接关系到远程代码回退的,但是开发中有可能出现的,比如,项目分阶段上线,而却把所有代码都给提交了。这时候就要,回退版本,然后重新提交。

1)打开更新历史

右击项目 ------> Git ------> Show History

2)复制最版本和要回退的版本

选中,点击"Copy Revision Number"复制两个版本的版本号:

保存下来:

最新版本:2746f428a3d3d000bd1b0e886ef8167e1f73ec9c

回退版本:6bc5691cbe7304cb185b70fbc0dd975c7de86e8a

3)右击项目依次选中:Git->Repository->Reset HEAD

4)执行版本回退

Reset Type: Hard

To Commit: 输入回退版本(6bc5691cbe7304cb185b70fbc0dd975c7de86e8a5)

然后点击Reset按钮

5)这时本地代码已经回退到oldVersion,这时候如果直接push到远程仓库,会提示版本冲突。

三、总结

本文主要是讲解如何熟练运用git版本回退、回滚操作,其实操作很简单,基本都是几个命令,但是执行的过程需要细心点,欢迎大家收藏,遇到问题直接可以复制运行即可。

相关推荐
IT_陈寒36 分钟前
SpringBoot实战:5个让你的API性能翻倍的隐藏技巧
前端·人工智能·后端
梦想很大很大1 小时前
拒绝“盲猜式”调优:在 Go Gin 项目中落地 OpenTelemetry 链路追踪
运维·后端·go
唐叔在学习1 小时前
就算没有服务器,我照样能够同步数据
后端·python·程序员
用户68545375977692 小时前
同步成本换并行度:多线程、协程、分片、MapReduce 怎么选才不踩坑
后端
javaTodo2 小时前
Claude Code 记忆机制详解:从 CLAUDE.md 到 Auto Memory,六层体系全拆解
后端
LSTM973 小时前
使用 C# 和 Spire.PDF 从 HTML 模板生成 PDF 的实用指南
后端
JaguarJack3 小时前
为什么 PHP 闭包要加 static?
后端·php·服务端
BingoGo3 小时前
为什么 PHP 闭包要加 static?
后端
是糖糖啊3 小时前
OpenClaw 从零到一实战指南(飞书接入)
前端·人工智能·后端
百度Geek说3 小时前
基于Spark的配置化离线反作弊系统
后端