当前位置: 首页 > news >正文

git回退版本教程

前言

在git 中,我们要将一个文件提交到远程仓库很简单,git提交流程如下

其中,暂存区也被称为工作空间

但是要回退到之前的版本,还是有一点难度的,因为大部分的人都没有操作过,知道的人也就少了;所以今天特地写一篇博客,记录下回退的过程;

如何知道文件是否在暂存区呢?

有2种方式

第一种:通过命令

输入命令git status命令查看,下图中,

  • Changes to be cimmitted :表示是修改的文件,既然是修改,就代表这个文件是已存在的;
  • Untracked files :翻译为中文是:“未跟踪”的意思,也就是不在暂存区的文件;

第一种:通过idea查看

打开idea的LocalChanges查看:

  • 蓝色表示修改的文件,
  • 红色表示未添加到暂存区的文件

回退类型

  • 已提交,未push到远程仓库
    • git reset --soft 版本id: 撤销commit
    • git reset --mixed 版本id:撤销commit 和 add 两个动作
  • 已提交,并且已push到远程仓库
    • git reset --hard 版本id: 撤销并舍弃版本号之后的提交记录,使用需谨慎
    • git revert 版本id : 撤销。但是保留了提交记录(建议使用);
  • 修改了文件,未提交
  • git checkout -- 文件名称 还原已修改的文件

1、git reset --soft 撤销commit

首先看看已提交的记录,通过 git status查看

如果你用的 idea 开发工具,也可以通过快捷键 ctrl + shift + k查看已提交但未push的记录

通过git log查看所有的提交记录,第一个就是我们的刚刚提交但未push的版本;第二个是当前远程仓库最新的版本

要回退到上一个版本,先复制当前远程仓库最新的版本号id,也就是上图的第二个版本号id

ca38ec2648d51067a9f108689431ba640236d43c

回退,通过指定版本id的方式即可回退到最新的版本

git reset --soft ca38ec2648d51067a9f108689431ba640236d43c

执行后没有报错就表示成功

在通过命令git status 查看,本地仓库中的版本已经没了,已经回退到指定了版本了,回到了,未提交的状态,其中 modified 就是你已经修改了,但是未提交的文件;

通过快捷键 ctrl + shift + k看到提交的也没了

2、git reset --mixed 撤销commit 和 add 两个动作

首先创建一个文件 123.txt

然后添加到 暂存区,然后commit到本地仓库

# 添加到暂存区
git add .# 提交到本地仓库
git commit -m "commit..."

通过 git status可以看到已经提交到本地仓库了,这边只会告诉你有一个文件未push,但是不是告诉你具体是什么文件

输入 git log可以看到刚刚提交的内容,因为我们要回滚到上一个版本,所以先复制上一个版本的id;

进行回滚,输入以下命令

git reset --mixed ca38ec2648d51067a9f108689431ba640236d43c

没有报错,表示回滚成功了

通过 git status 查看,回到了原始状态,未添加到 暂存区,同时撤销了 commitadd 两个操作

3、git reset --hard 撤销并舍弃版本号之后的提交记录,撤销push、commit、add 三个动作

首先创建一个文件 123.txt

然后添加到 暂存区,然后commit到本地仓库并push到远程仓库

# 添加到暂存区
git add .# 提交到本地仓库
git commit -m "commit..."# push到远程仓库
git push

通过 git log 命令可以看到,已经提交到远程仓库了

然后进行回退到上一个版本的操作,复制上一个版本的id,输入以下命令

git reset --hard ca38ec2648d51067a9f108689431ba640236d43c

一定要强制推送到远程分支,否则不会变更

git push -f origin master

通过 git log查看,发现已经将远程仓库的版本回退到了上个版本,并且刚刚push的记录也没了;

4、git revert 撤销。但是保留了提交记录;

git revert 和其他的回退不太一样,其他的回退到指定版本后,都会清除调之后的版本,但是 git revert 不会删除版本,而是新建一个版本来存储回退的内容

用户也很简单,根据上面的例子操作一遍就号,因为 git revert 这个命令确实用的不多,所以这边也不做演示,使用格式为;

git revert 版本id

5、git checkout – 还原已修改但是未提交的文件

// 指定还原`aaa.html`文件
git checkout -- aaa.html// 还原所有文件
git checkout -- *
git checkout -- .

http://www.dtcms.com/a/301331.html

相关文章:

  • Java validation
  • Java学习第八十部分——Freemarker
  • Linux c网络专栏第三章DPDK
  • Petalinux驱动开发
  • Linux驱动开发笔记(五)——设备树(下)——OF函数
  • 人社部物联网安装调试员的实训平台
  • RabbitMq 常用命令和REST API
  • 9.SpringBoot Web请求参数绑定方法
  • 盛最多水的容器-leetcode
  • 《Java 程序设计》第 7 章 - 继承与多态
  • 记录几个SystemVerilog的语法——时钟块和进程通信
  • maven聚合工程(多个mudule只编译、打包指定module)
  • JVM类加载机制全流程详解
  • 通过硬编码函数地址并转换为函数指针来调用函数
  • Java#包管理器来时的路
  • Leetcode-3427变长子数组求和
  • Mitk教程案例项目编译
  • 嵌入式——单片机的独立按键
  • 【3DsMax+Zbrush+SP】风格化低多边形模型制作教程——以制作杯子为例——03在Substance Painter中制作材质
  • PyTorch深度学习入门记录3
  • 两数之和 II - 输入有序数组-leetcode
  • 【深度学习系列82】joyagent上手体验
  • 五、搭建springCloudAlibaba2021.1版本分布式微服务-gateway网关
  • 基于大模型的预训练、量化、微调等完整流程解析
  • 【思维链(CoT)技术深度解析】从理论到实践的革命性推理方法
  • pytest中的参数化
  • Python-初学openCV——图像预处理(三)
  • 相对路径遍历(CWE-22)
  • 【杂谈】-被引用即被看见:生成式AI如何改写内容规则
  • vscode找不到python解释器的解决方案