好的,我们进入 第2课:版本查看与回退机制,本课你将学会如何查看提交历史、对比更改,并掌握多种回退版本的方法。


📘 第2课:查看历史与版本回退


🎯 本课目标

  • 熟练查看 Git 提交记录

  • 掌握差异查看、版本切换与回退

  • 理解 checkoutresetrevert 的区别与用法


🗂 一、查看提交历史

1. 查看完整日志

git log

常见快捷选项:

git log --oneline        # 每条提交一行,简洁模式  
git log --graph          # 图形化显示分支合并结构  
git log --stat           # 显示每次提交修改了哪些文件和行数

2. 查看指定文件的修改历史

git log 文件名

🔍 二、查看文件修改内容(差异对比)

1. 查看尚未提交的变动

git diff

显示工作区 vs 暂存区 的差异(未 add 的内容)

2. 查看已 add 但未 commit 的差异

git diff --cached

3. 比较历史版本之间的差异

git diff 哈希1 哈希2

示例:

git diff HEAD~1 HEAD

🕹 三、版本回退的三种方式

Git 提供了三种常用的回退机制:

方法命令场景是否修改历史
1. checkout切换到指定版本临时查看旧版本、不修改历史
2. reset回退到旧版本(彻底更改历史)撤销提交、彻底还原是(危险)
3. revert撤销某次提交保留历史,生成一条新提交否(安全)

🧪 示例操作

1. 查看历史提交哈希值

git log --oneline

输出示例:

e9b1fc0 添加登录功能
5d7c1f2 初始化项目

2. 使用 git checkout 查看旧版本(只读)

git checkout e9b1fc0

🔸 注意:此时进入了“游离 HEAD 状态”,不要直接在上面开发。

返回最新版本:

git checkout main

3. 使用 git reset 回退版本(危险操作)

回退到上一个版本(保留改动但不提交):
git reset --soft HEAD~1
回退到上一个版本(不保留改动):
git reset --hard HEAD~1

🚨慎用 --hard,会删除工作区改动!


4. 使用 git revert 撤销某次提交(推荐)

git revert e9b1fc0

🔸 会创建一条“反向操作”的新提交,安全可追踪。


🔧 误删文件怎么找回?

如果误删了还没提交的文件,可用如下命令恢复:

git checkout -- 被删文件路径

📌 本课命令小结

命令作用
git log查看提交历史
git diff查看差异
git checkout <版本号>切换历史版本
git reset --hard HEAD~1强制回退版本
git revert <版本号>创建反操作的提交

✅ 练习任务

  1. 提交多个更改,练习使用 git loggit diff

  2. resetrevert 分别回退一次提交

  3. 练习恢复误删文件


如果你准备好了,我们继续进入 第3课:分支管理基础与合并操作
请回复“继续第3课”进入下一节内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913234.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913234.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913234.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

摄像头AI智能识别工程车技术及应用前景展望

摄像头AI自动识别工程车是智能交通系统和工程安全管理领域的一项重要技术。它通过图像识别技术和深度学习算法&#xff0c;实现对工程车的自动检测和识别&#xff0c;从而提高了施工现场的安全性和管理效率。以下是对该技术及其应用的详细介绍&#xff1a;一、技术实现数据收集…

Windows服务器安全配置:组策略与权限管理最佳实践

Windows服务器是企业常用的服务器操作系统&#xff0c;但其开放性和复杂性也使其成为攻击者的目标。通过正确配置组策略和权限管理&#xff0c;可以有效提高安全性&#xff0c;防止未经授权的访问和恶意软件的入侵。以下是详细的安全配置指南和最佳实践。 1. 为什么组策略和权限…

Windows部署Rocketmq问题汇总

最近研究了下Rocketmq消息中间件&#xff0c;在Win10上部署时遇到一些问题&#xff0c;做个记录 部署的是Rocketmq 4.92版本&#xff0c;对应使用的控制台用的1.0版本 下载地址 1.优化内存占用 修改 runserver.cmd 修改前 set "JAVA_OPT%JAVA_OPT% -server -Xms2g -Xmx…

动手学深度学习-学习笔记(总)

文章目录 1、概述2、内容2.1、python2.2、动手学深度学习2.2.1、课前准备2.2.2、预备知识2.2.3、线性神经网络 2.3、深度学习重要概念 3、常见问题3.1、安装 d2l 失败3.2、调用 mean() 方法报错3.3、markdown 常见公式3.4、执行动手学深度学习中的代码&#xff0c;无法显示图片…

springboot3.5 MySQL 自动装配解析

一、配置环境 1. 配置pom.xml <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency> 2、自动配置图解 二、相关代码解析 1、自动配置入口&#xff1a…

使用 Conda 工具链创建 Poetry 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》

Python 多版本治理理念&#xff08;Windows 平台 零基础友好&#xff09;-CSDN博客 Python 多版本与开发环境治理架构设计-CSDN博客 使用命令行创建项目本地的 Poetry 虚拟环境实战演示 —— 基于《Python 多版本与开发环境治理架构设计》的最佳实践-CSDN博客 一、Python311 环…

北小菜, python , onvif

第一节&#xff1a; 首先是环境的搭建。 环境的搭建。 roottopeet:/home/topeet/source_code/wang_onvif_python# python -m venv venv Command python not found, did you mean:command python3 from deb python3command python from deb python-is-python3 roottopeet:/ho…

TinyWebserver学习(9)-HTTP

一、相关知识 1、有限状态机&#xff1a; 有限状态机&#xff08;Finite State Machine, FSM&#xff09;是一种用于描述对象在其生命周期内可能经历的不同状态及其状态转换规则的模型。它广泛应用于游戏开发、网络协议、词法解析、UI逻辑控制等领域。以下是C中有限状态机的简…

2025最新软件测试面试八股文

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师…

React 强大的表单验证库formik之集成Yup、React Hook Form库

简介 Formik 是为 React 开发的开源表单库&#xff0c;提供状态管理、验证和提交处理功能&#xff0c;可简化复杂表单的开发。 核心优势 ‌- 状态管理 ‌&#xff1a;自动跟踪输入值、验证状态和提交进度&#xff0c;无需手动编写状态逻辑。 ‌ ‌- 验证功能 ‌&#xff1a;…

破解风电运维“百模大战”困局,机械版ChatGPT诞生?

面对风机87%的非计划停机&#xff0c;30多个专用模型为何束手无策&#xff1f;一套通用大模型如何实现轴承、齿轮、转子“一站式”健康管理&#xff1f;一、行业痛点&#xff1a;风机运维深陷“碎片化泥潭”1.1 87%停机故障由多部件引发齿轮断裂、轴承磨损、电机短路……风电故…

Spring Bean 控制销毁顺序的方法总结

控制Spring Bean销毁顺序的方法 在Spring框架中&#xff0c;有几种方法可以控制Bean的销毁顺序。以下是主要的几种方式及其示例代码&#xff1a; 1. 实现DisposableBean接口 实现DisposableBean接口并重写destroy()方法&#xff0c;Spring会按照依赖关系的相反顺序调用这些方…

Gemini CLI MCP 教程:设置、命令与实际使用

如果你想要为任何 MCP 服务器设置 Gemini CLI,这个快速教程将为你提供指导。 Gemini CLI 结合 MCP(模型上下文协议)服务器,改变了你通过自然语言命令进行编码的方式。 你可以要求 Gemini 分析你的代码库、管理文件、查询数据库,或通过对话提示与 API 交互。 MCP 服务器连…

LangChain 构建向量数据库和检索器

LangChain 构建向量数据库和检索器实战 随着大语言模型&#xff08;LLM&#xff09;在各类 AI 应用中不断普及&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;逐渐成为提升回答准确率与上下文关联性的重要技术路径。 一、什…

基于 LangChain 实现通义千问 + Tavily 搜索 Agent 的简单实践

文章目录 一、相关背景1.1 LangChain 简介1.2 通义千问&#xff08;Tongyi Qianwen&#xff09;1.3 Tavily 实时搜索引擎1.4 架构总览 二、环境配置设置 API 密钥 三、 Tavily 搜索四、智能 Agent 示例&#xff1a;自动判断是否调用 Tavily4.1 初始化 Agent4.2 提问两个问题&am…

SegGPT: 在上下文中分割一切

摘要 我们提出了 SegGPT&#xff0c;一个在上下文中执行“分割一切”的通用模型。我们将各种分割任务统一为一个通用的上下文学习框架&#xff0c;通过将不同类型的分割数据转换为相同的图像格式来兼容这些差异。SegGPT 的训练被建模为一个带有随机颜色映射的上下文着色问题。…

【网络】Linux 内核优化实战 - net.core.busy_read

目录 核心功能工作原理与优势配置方式1. 临时配置&#xff08;重启失效&#xff09;2. 永久配置&#xff08;重启生效&#xff09; 与 net.core.busy_poll 的协同作用适用场景与注意事项适用场景&#xff1a;注意事项&#xff1a; 总结 net.core.busy_read 是 Linux 内核中与网…

alpine安装及配置nodejs开发测试环境

在Alpine Linux上安装和使用Node.js&#xff0c;打造开发和测试的环境。 apk仓库打开社区的源。 先在命令行中使用命令apk search nodejs npm yarn对仓库源进行搜索&#xff0c;&#xff0c;看看nodejs、yarn、npm的版本情况。 localhost:~# apk search nodejs npm yarn nod…

Apache Commons Pool中的GenericObjectPool详解

GenericObjectPool 是 Apache Commons Pool 库中的核心类&#xff0c;用于实现对象的池化管理&#xff0c;适用于数据库连接、HTTP 客户端、线程等昂贵资源的复用。以下从核心概念、工作原理、参数配置、使用场景及最佳实践等方面详细解析&#xff1a; ⚙️ 一、核心概念与组成…

攻防世界CTF题目解析系列————(1)

题目来源:攻防世界wife_wife 打开题目之后&#xff0c;发现登录界面&#xff0c;然后尝试弱口令&#xff0c;sql二次注入&#xff0c;xss发现都没有&#xff0c;然后看见下面go register&#xff08;去注册&#xff09;按钮 成功注册&#xff08;username和password随便搞&…