git中reset和checkout的用法

git reset:重置分支的历史与工作区​

核心作用​​:移动当前分支的指针(即改变分支的历史),并可选地修改暂存区(Index)和工作目录(Working Directory)。常用于撤销提交或合并操作。

三种模式​
  1. ​​--soft 模式​
    行为​
    ​:仅移动分支指针(HEAD),不修改暂存区和工作目录。
    ​使用场景​​:撤销提交但保留修改,允许重新提交。

    git reset --soft HEAD~1  # 撤销最后一次提交,修改保留在暂存区
  2. ​​--mixed 模式(默认)
    行为​​:移动分支指针,并重置暂存区,但保留工作目录的修改。
    使用场景​​:撤销提交和暂存操作,需重新 add 后再提交
    git reset HEAD~1  # 等效于 git reset --mixed HEAD~1
  3. ​​--hard 模式
    行为​​:移动分支指针,并强制重置暂存区和工作目录到指定提交的状态。
    使用场景​​:彻底丢弃最近的提交和所有修改(慎用!)。
    git reset --hard HEAD~1  # 丢弃最后一次提交及所有修改
    关键特点​
    影响分支历史​​:reset 会改变分支的指针,从而修改提交历史。
    ​适用场景​​:撤销本地提交、合并冲突后重置等操作。

git checkout:切换分支或检出内容​

核心作用​​:切换分支,或检出指定提交/文件到工作目录。​​不修改分支历史​​,主要用于切换上下文或恢复文件。

切换分支​
git checkout <branch-name>  # 切换到另一个分支
    • 行为​​:
      • 移动 HEAD 到目标分支,更新工作目录和暂存区为该分支的最新状态。
      • 如果工作目录有未提交的修改,Git 会阻止切换(除非使用 -f 强制切换或修改被忽略)。

    分离头指针(Detached HEAD)​​ 

    git checkout <commit-hash>  # 检出一个提交,进入分离头状态
    • 行为​​:
      • HEAD 直接指向提交而非分支,此时的新提交不会属于任何分支(需手动创建分支保存)。
      • 适用于临时调试或实验性修改。
    检出文件
    git checkout HEAD -- file.txt  # 从 HEAD 恢复文件到工作目录和暂存区
    git checkout <branch> -- file.txt  # 从其他分支恢复文件
    • 行为​​:
      • 将指定文件恢复到目标版本(覆盖工作目录和暂存区),不影响 HEAD 位置。
      • 常用于撤销对单个文件的修改。
    关键特点​
    • ​不修改分支历史​​:checkout 仅切换上下文或恢复文件,不会改变分支的提交记录。
    • ​适用场景​​:切换分支、临时查看旧版本代码、撤销文件修改。

    reset 与 checkout 的核心区别​

    功能​git resetgit checkout
    ​操作对象​当前分支(修改分支指针)分支、提交或文件(不修改分支历史)
    ​影响范围​分支历史、暂存区、工作目录工作目录、暂存区(仅文件操作时)
    ​是否改变提交历史​否(除非在分离头模式下提交)
    ​典型场景​撤销本地提交切换分支、恢复文件

    总结​

    • ​用 reset 当你想撤销提交或修改分支历史​​(如回退到旧版本)。
    • ​用 checkout 当你想切换分支、查看旧版本代码,或恢复单个文件​​。

    ​慎用 git reset --hard​:它会永久丢弃未提交的修改!


    场景:需要将工作目录的修改与上一个提交​​完全合并为一个新提交​​,并可能修改提交信息,怎么做呢?

    以下是分步解决方案,可根据你的需求选择两种方法:

    git reset --soft 和 git commit --amend ​​都是对本地提交历史的修改​​。如果这些提交已经推送到远程仓库(如 GitHub、GitLab),直接修改本地历史后,再推送会遇到问题。如果提交已推送到远程仓库需要告知团队成员


    ​方法一:使用 git reset --soft

    适用场景​​:需要将工作目录的修改与上一个提交​​完全合并为一个新提交​​,并可能修改提交信息。

    步骤​​:

    • ​​撤销最近一次提交,但保留修改在暂存区​​
    git reset --soft HEAD~1

      此时,之前的提交内容和工作目录的新修改都会保留在暂存区(git status 会显示所有修改已暂存)。

      • 查看状态确认修改已合并​
      git status  # 确认所有修改已加入暂存区
      • ​提交合并后的内容​
      git commit -m "合并工作区修改与上一个提交"

      方法二:使用 git commit --amend 

      适用场景​​:仅需将工作目录的修改​​追加到上一个提交​​,且不修改提交信息(或微调)。

      步骤​​:

      • ​将工作目录的修改加入暂存区​​:
      git add .  # 或指定文件 git add file1.txt
      • ​将修改合并到上一个提交​​:
      git commit --amend --no-edit  # 保留原提交信息

      ​ 如果想修改提交信息,去掉 --no-edit

      git commit --amend -m "新的提交信息"
        ​方法​git reset --softgit commit --amend
        ​是否修改提交历史​是(生成新提交)是(覆盖原提交)
        ​是否保留原提交信息​需手动输入新提交信息可保留或修改原提交信息
        ​适用场景​完全重写提交内容与信息快速追加修改到原提交

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

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

        相关文章

        权限提升—Linux提权内核溢出漏洞辅助项目

        前言 今天开启Linux提权的篇章&#xff0c;主要是讲一下Linux的内核漏洞提权&#xff0c;利用方式和Windows系统漏洞提权差不多&#xff0c;也是网上的项目扫一下&#xff0c;然后根据漏洞编号去找exp即可。 信息收集 首先要说一下Linux用户的权限划分。 系统用户&#xff…

        React Native Redux 使用指南 redux-toolkit

        React Native Redux 使用指南 redux-toolkit 一个可预测和可维护的全局状态管理 JavaScript 库 Redux 和 React-Redux以及**reduxjs/toolkit 的关系&#xff1a;** Redux、React-Redux、reduxjs/toolkit 是 React 生态中状态管理的「黄金三角组合」&#xff0c;它们的关系可…

        JVM——Java 虚拟机是如何加载 Java 类的?

        引入 在 Java 世界的底层运作中&#xff0c;类加载机制扮演着一个既神秘又关键的角色。它就像是一个精心设计的舞台幕后 machinery&#xff0c;确保了 Java 程序能够顺利运行。今天&#xff0c;我们就深入探索 Java 虚拟机&#xff08;JVM&#xff09;是如何加载 Java 类的。 …

        清华团队提出时序聚类数据库内高效方案,已被SIGMOD 2025接收

        时间序列聚类是挖掘物联网等场景下频繁模式的关键技术&#xff0c;但现有SOTA方法&#xff08;如K-Shape&#xff09;面临两大瓶颈&#xff1a;1&#xff09;传统数据库因LSM-Tree存储导致时间戳无序&#xff0c;难以直接支持高效聚类&#xff1b;2&#xff09;跨时间范围查询需…

        【阿里云大模型高级工程师ACP学习笔记】2.8 部署模型

        一、学习目标 特别说明:这一章节是2025年3月官方重点更新的部分,几乎对内容重新翻新改造了一遍,重点突出了对于如何结合不同的阿里云产品来部署大模型进行了更加详细的介绍和对比,这里整理给大家,方便大家参考。 在备考阿里云大模型高级工程师ACP认证的过程中,学习《2.8 …

        第T10周:数据增强

        &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 从 tensorflow.keras 中导入 layers 模块&#xff0c;包含了常用的神经网络层&#xff0c;用来搭建模型结构。 检查并列出系统中可用的物理 GPU 设备&#xff…

        uniapp 支付宝小程序自定义 navbar 无效解决方案

        如图&#xff1a; uniapp编译到支付宝小程序隐藏默认的导航栏失效了 解决方案&#xff1a; 在 pages.json 文件中找到 globalStyle 中加入以下代码&#xff1a; "mp-alipay": {"transparentTitle": "always","titlePenetrate":…

        vue2 el-element中el-select选中值,数据已经改变但选择框中不显示值,需要其他输入框输入值才显示这个选择框才会显示刚才选中的值

        项目场景&#xff1a; <el-table-column label"税率" prop"TaxRate" width"180" align"center" show-overflow-tooltip><template slot-scope"{row, $index}"><el-form-item :prop"InquiryItemList. …

        centos7 离线安装python3 保留python2

        一、事前准备&#xff1a; &#xff08;1&#xff09;查看centos具体版本 cat /etc/redhat-releaseCentOS Linux release 7.4.1708 (Core) &#xff08;2&#xff09;查看linux中当前python版本 centos7 默认安装python2.7.5 &#xff08;3&#xff09;查看python3的依赖&#…

        十三种通信接口芯片——《器件手册--通信接口芯片》

        目录 通信接口芯片 简述 基本功能 常见类型 应用场景 详尽阐述 1 RS485/RS422芯片 1. RS485和RS422标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6. 选型建议 2 RS232芯片 1. RS232标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6…

        2025年RAG技术发展现状分析

        2025年&#xff0c;大模型RAG&#xff08;检索增强生成&#xff09;技术经历了快速迭代与深度应用&#xff0c;逐渐从技术探索走向行业落地&#xff0c;同时也面临安全性和实用性的新挑战。以下是其发展现状的综合分析&#xff1a; 一、技术架构的持续演进 从单一到模块化架构 …

        case和字符串操作

        使用if选择结构 if [];then elif [];then #注意这个地方,java是else if else ; fi 使用for循环结构 使用for循环&#xff0c;语法结构如下所示&#xff1a; for 变量名 in 值1 值2 值3 #值的数量决定循环任务的次数 do命令序列 done#循环输出1到10 for i in {1..10} #注…

        Stm32 烧录 Micropython

        目录 前言 准备工作 开始操作 问题回顾 后记 前言 去年曾经尝试Pico制作openmv固件&#xff0c;由于知识储备不够最后失败了&#xff0c;留了一个大坑&#xff0c;有了前几天的基础&#xff0c;慢慢补齐知识&#xff0c;最近这一周一直在学习如何编译Stm固件并烧录到单片机…

        盐化行业数字化转型规划详细方案(124页PPT)(文末有下载方式)

        资料解读&#xff1a;《盐化行业数字化转型规划详细解决方案》 详细资料请看本解读文章的最后内容。 该文档聚焦盐化行业数字化转型&#xff0c;全面阐述了盐化企业信息化建设的规划方案&#xff0c;涵盖战略、架构、实施计划、风险及效益等多个方面&#xff0c;旨在通过数字化…

        2025年人工智能火爆技术总结

        2025年人工智能火爆技术总结&#xff1a; 生成式人工智能 生成式人工智能可生成高质量的图像、视频、音频和文本等多种内容。如昆仑万维的SkyReels-V2能生成无限时长电影&#xff0c;其基于扩散强迫框架&#xff0c;结合多模态大语言模型和强化学习等技术&#xff0c;在运动动…

        边缘计算革命:大模型轻量化部署全栈实战指南

        当ResNet-152模型能在树莓派4B上实现每秒27帧实时推理时&#xff0c;边缘智能时代真正到来。本文解析从模型压缩到硬件加速的完整技术栈&#xff0c;实测Transformer类模型在移动端的部署时延可压缩至16ms&#xff0c;揭示ARM芯片实现INT4量化的工程秘诀与十种典型场景优化方案…

        边缘计算:数字世界的”末梢神经系统”解析-优雅草卓伊凡

        边缘计算&#xff1a;数字世界的”末梢神经系统”解析-优雅草卓伊凡 一、边缘计算深度解析 1.1 边缘计算的定义与架构 边缘计算&#xff08;Edge Computing&#xff09;是一种分布式计算范式&#xff0c;它将数据处理能力从传统的集中式云数据中心推向网络边缘&#xff0c;更…

        面试手撕——迭代法中序遍历二叉树

        思路 访问顺序和处理顺序不一致导致迭代法难写&#xff0c;体现在总要先遍历根节点&#xff0c;才能访问左右孩子&#xff0c;用null标记&#xff0c;null标记的节点表示已经访问过了&#xff0c;下一次可以处理&#xff0c;所以在当前栈顶节点不是null的时候&#xff0c;都要…

        AD系列:Windows Server 2025 安装AD CS角色和颁发证书

        什么是 Active Directory 证书服务&#xff1f; Active Directory 证书服务 (AD CS) 是一个 Windows Server 角色&#xff0c;负责颁发和管理在安全通信和身份验证协议中使用的公钥基础结构 (PKI) 证书。 颁发和管理证书 数字证书可用于对电子文档和消息进行加密和数字签名&…

        kubernetes》》k8s》》Service 、Ingress 区别

        K8S>>Service 资料 K8S >>Ingress 资料 Ingress VS Service 物理层数据链路层网络层传输层会话层表示层应用层 Ingress是一种用于暴露HTTP和HTTPS路由的资源&#xff0c;它提供了七层&#xff08;应用层&#xff09;的负载均衡功能。Ingress可以根据主机名、…