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

相关推荐
努力的小郑1 小时前
Canal 不难,难的是用好:从接入到治理
后端·mysql·性能优化
Victor3562 小时前
MongoDB(87)如何使用GridFS?
后端
Victor3562 小时前
MongoDB(88)如何进行数据迁移?
后端
小红的布丁2 小时前
单线程 Redis 的高性能之道
redis·后端
GetcharZp2 小时前
Go 语言只能写后端?这款 2D 游戏引擎刷新你的认知!
后端
宁瑶琴4 小时前
COBOL语言的云计算
开发语言·后端·golang
普通网友4 小时前
阿里云国际版服务器,真的是学生党的性价比之选吗?
后端·python·阿里云·flask·云计算
IT_陈寒5 小时前
Vue的这个响应式问题,坑了我整整两小时
前端·人工智能·后端
Soofjan6 小时前
Go 内存回收-GC 源码1-触发与阶段
后端
shining6 小时前
[Golang]Eino探索之旅-初窥门径
后端