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版本回退、回滚操作,其实操作很简单,基本都是几个命令,但是执行的过程需要细心点,欢迎大家收藏,遇到问题直接可以复制运行即可。

相关推荐
Tony Bai3 分钟前
再见,丑陋的 container/heap!Go 泛型堆 heap/v2 提案解析
开发语言·后端·golang
寻找奶酪的mouse35 分钟前
30岁技术人对职业和生活的思考
前端·后端·年终总结
梦想很大很大42 分钟前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go
毅炼1 小时前
Java 基础常见问题总结(4)
java·后端
想用offer打牌1 小时前
MCP (Model Context Protocol) 技术理解 - 第一篇
后端·aigc·mcp
千寻girling1 小时前
Koa.js 教程 | 一份不可多得的 Node.js 的 Web 框架 Koa.js 教程
前端·后端·面试
程序员清风1 小时前
北京回长沙了,简单谈谈感受!
java·后端·面试
何中应2 小时前
请求头设置没有生效
java·后端
NPE~2 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化
宋小黑2 小时前
JDK 6到25 全版本网盘合集 (Windows + Mac + Linux)
java·后端