撤销最近一次的提交,使用git revert 和 git reset的区别

news2024/12/24 2:12:45

文章目录

    • 工作区 暂存区 本地仓库 远程仓库
    • 需求:已推送到远程仓库,想要撤销操作
    • git revert (添加新的提交来“反做”之前的更改,云端会残留上次的提交记录)
    • git reset(相当于覆盖上次的提交)
      • 1.--soft:
      • 2.--mixed (默认选项):
      • 3. --hard:
      • 注意事项
    • 说明:
      • 参考:
    • 附录:git revert的详细说明

工作区 暂存区 本地仓库 远程仓库

在这里插入图片描述

需求:已推送到远程仓库,想要撤销操作

git revert (添加新的提交来“反做”之前的更改,云端会残留上次的提交记录)

如果你已经将提交推送到了远程仓库,并且想要撤销这次提交,你可以使用 git revert 命令。

如果你只是要撤销最近的一次提交,可以使用 HEAD 指针来引用它:

git revert HEAD

**请注意,使用 git revert 并不会从项目历史中删除任何提交,这个命令会创建一个新的提交,这个新提交会“反做”之前的提交,从而撤销那些更改。这样做的好处是不会改变项目的历史记录,因此是协作项目中推荐的做法。

git reset(相当于覆盖上次的提交)

如果你需要彻底从历史记录中删除提交,那么需要考虑使用 git reset 并之后使用 --force 选项与远程仓库同步,但这种做法风险较高,因为它会改变项目的历史记录。**

1.–soft:

撤销最后一次提交,但是保留更改在暂存区。提交信息和更改都会撤销,但是更改的内容还在暂存区,可以重新提交。

git reset --soft HEAD~1

2.–mixed (默认选项):

撤销最后一次提交,但是保留更改在工作目录。提交信息会被撤销,更改的内容会保留在工作目录中,需要重新暂存和提交。

git reset --mixed HEAD~1

这是默认的 git reset 行为。它会重置 HEAD 和暂存区到指定的提交,但不改变工作目录。
相当于 git reset HEAD~1

3. --hard:

撤销最后一次提交,并且丢弃所有更改。提交信息和更改都会被永久丢弃,工作目录、暂存区和HEAD都会回退到上一个提交的状态。

git reset --hard HEAD~1
  • 如果你使用 --hard,你将失去最后一次提交的所有更改,这是不可逆的。如果你使用 --soft 或 --mixed,你将保留更改,可以重新提交。

注意事项

  • 如果你的更改已经推送到了远程仓库,并且其他人可能已经基于这些更改进行了操作,使用 --hard 重置可能会导致问题。

  • 如果你使用 --soft 重置,并且想要撤销更改,你可以使用 git clean 来清除未提交的更改:

    git clean -fd
    

    这个命令会删除未跟踪的文件和目录,-f 表示强制,-d 表示删除目录。

说明:

git reset 用于移动 HEAD 指针,git reset之后云端仍有上次提交的记录,所以撤销之后的重新提交需要在git push之后加上 -f 用于强制覆盖上次不用的提交。直接git push会出现问题

git push  --force

参考:

  • git提交错了?别慌,直接删除提交记录:https://blog.csdn.net/weixin_45334346/article/details/138388941

附录:git revert的详细说明

如果你已经将提交推送到了远程仓库,并且想要撤销这次提交,你可以使用 git revert 命令。这个命令会创建一个新的提交,这个新提交会“反做”之前的提交,从而撤销那些更改。这样做的好处是不会改变项目的历史记录,因此是协作项目中推荐的做法。

以下是使用 git revert 命令的步骤:

  1. 找到要撤销的提交的哈希值
    使用 git log 查看提交历史,并找到你想要撤销的提交的哈希值。

  2. 执行 revert 操作
    使用 git revert 命令加上提交的哈希值来撤销这次提交:

    git revert [提交哈希值]
    

    如果你只是要撤销最近的一次提交,可以使用 HEAD 指针来引用它:

    git revert HEAD
    
  3. 解决可能出现的冲突(如果有的话):
    如果撤销过程中出现冲突,Git 会停止并让你手动解决这些冲突。解决完冲突后,你需要添加这些更改到暂存区并完成 revert 操作:

    git add [解决冲突的文件]
    git revert --continue
    
  4. 推送 revert 操作到远程仓库
    完成 revert 操作并测试没有问题后,将这次 revert 提交推送到远程仓库:

    git push origin [分支名]
    

请注意,使用 git revert 并不会从项目历史中删除任何提交,它只是添加一个新的提交来“反做”之前的更改。如果你需要彻底从历史记录中删除提交,那么需要考虑使用 git reset 并使用 --force 选项与远程仓库同步,但这种做法风险较高,因为它会改变项目的历史记录。

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

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

相关文章

Visual Studio 智能代码插件:CodeGeeX

前言 在软件开发领域,高效的编程助手一直是提升开发者效率和质量的关键。 随着人工智能技术的不断发展,智能编程助手逐渐成为开发者们不可或缺的工具。其中,CodeGeeX作为一款专为Visual Studio设计的免费智能编程助手,凭借其强大…

初识 BPF:从 Hello World 开始的内核编程之旅

Part 1 概述 1. 背景 BPF 技术被列为近些年 Linux 内核领域最火热的新领域之一。它成功的给 Linux 内核赋予了少量的动态可编程性,可以在 Linux 内核运行时,实时修改内核的行为,但不需要重新编译和重启内核。据此,BPF 在 Linux …

java面试(多线程)

线程和进程的区别 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘,网络等设备。进程就是用来加载指令,管理内存,管…

鲲鹏迁移——DevKit

参考文档 鲲鹏DevKit开发套件下载-鲲鹏社区鲲鹏社区是面向鲲鹏合作伙伴、开发者的全产业社区,集学习、实验、认证等功能为一体,是鲲鹏计算产业的官方社区。https://www.hikunpeng.com/developer/devkit/download 鲲鹏社区-官网丨凝心聚力 共创行业新价…

记录一次开源 MaxKey 安装部署

官方文档:https://www.maxkey.top/doc/docs/intro/ 开源代码:https://toscode.mulanos.cn/dromara/MaxKey 发行版:https://toscode.mulanos.cn/dromara/MaxKey/releases 一、准备工作 yum install -y yum-utils yum-config-manager --add-r…

CSS 之 自定义属性(变量)

一、简介 ​ CSS的自定义属性,又称为CSS变量或级联变量,用于定义一个带有值的、可重复使用的CSS属性(变量)。其包含的值可以在其作用域内的任意属性上重复使用,在使用时需要借助var()函数获取自定义属性的值。当自定义…

text-embedding 嵌入模型

为什么使用embedding 计算机只能处理数字,但我们希望它能够理解文字、图片或其他形式的数据。这就是embedding的作用。它将这些复杂的数据转换成数字表示,就像给它们贴上了标签一样。这些数字表示不仅保留了原始数据的重要信息,还能在计算机…

短视频商城全套源码:开启电商新纪元

随着数字媒体的快速发展,短视频平台已经成为人们获取信息、娱乐和社交的重要渠道。在这样一个大背景下,短视频商城的兴起,无疑为电商行业带来了新的机遇和挑战。本文将探讨短视频商城全套源码的重要性,以及它如何助力商家和开发者…

Vulnhub - AI-WEB-1.0靶机教程

目录 站点信息收集 c段扫描 端口扫描 目录扫描 漏洞利用 使用 burp 抓包 查询数据库名 查询数据库下的表 查询表中的字段名 查询字段中的数据 --os-shell 上传一句话木马 下载地址:https://download.vulnhub.com/aiweb/AI-Web-1.0.7z 我们从站点信息收…

2024年区块链,物联网与信息技术国际会议(ICBITIT 2024)

2024年区块链,物联网与信息技术国际会议(ICBITIT 2024) 2024 International Conference on Blockchain, Internet of Things, and Information Technology 会议简介: 2024年区块链,物联网与信息技术国际会议&#xff…

【调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包】

调试笔记-系列文章目录 调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包 文章目录 调试笔记-系列文章目录调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包 前言一、调试环境操作系统:Ubuntu 22.04.4 LTS编译环境调试目标 二、调试步…

java函数编程-黑马学习笔记

第一章 01合格的函数 函数就是一个规则 合格的函数就是只要你输入相同,无论多少次调用,不论什么时间调用,输出是相同的。 函数可以引用外部的数据,但是需要去保证外部的数据不可变 static关键字修饰的静态方法本质上和函数没…

TCP 与 UDP

0. tcp 与 udp 的 异同特性 TCPUDPname传输控制协议用户数据报协议面向连接? 需要 传输数据前建立连接传输完毕后断开连接不需要可靠的传输数据? 可靠 有确认机制(三次握手) 有确认、窗口、重传、拥塞控制的机制保证数据可靠传输…

10Django项目--用户管理系统--改

对应视频链接点击直达 10Django项目--用户管理系统--改 对应视频链接点击直达改a,本质b,修改(更新) 页面相关a,index页面新增操作按钮b,修改(更新)页面c,路由和函数 OVER,不会有人不会吧不会的加Q139400651…

项目9-网页聊天室3(主界面之用户信息)

1.前端页面 CSS: 如何让img里的图片自适应div,且不变形_img自适应div大小 铺满且不变形-CSDN博客 JavaScript/jQuery 如何改变一个img元素的src属性|极客教程 (geek-docs.com) 2.要求 左上角显示用户的昵称和头像. 3.后端代码 3.1 添加拦截器 3.2 注册拦截器 …

深入解析MySQL 8中的角色与用户管理

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 深入解析MySQL 8中的角色与用户管理 前言角色和用户的基础概念用户(User)…

收银系统源码--零售连锁店铺如何选择适合自己的收银系统?

如果你现在还认为小便利店只要简单的收款,只有大型的连锁便利店才需要收银软件和管理软件,那你就错了,连锁品牌的便利店是必须要用到专业的收银软件,但是小微型的便利店更应该要用专门的软件, 在各行各业逐步革新互联网…

【ai】LiveKit Agent 的example及python本地开发模式工程实例

title: ‘LiveKit Agent Playground’ playgroundLiveKit Community playground的环境变量:LiveKit API # LiveKit API Configuration LIVEKIT_API_KEYYOUR_API_KEY LIVEKIT_API_SECRETYOUR_API_SECRET# Public configuration NEXT_PUBLIC_LIVEKIT_URLwss://YOUR_…

计算机网络基础 - 计算机网络和因特网(1)

计算机网络基础 计算机网络和因特网什么是 Internet?具体构造的的角度服务角度网络结构 网络边缘网络核心电路交换分组交换概述排队时延和分组丢失转发表和路由选择协议按照有无网络层的连接 分组交换 VS 电路交换 接入网DSL 因特网接入电缆因特网接入光纤到户 FTTH无线接入网…

十五、Python模块 1、(入门一定看!!!)「长期更新Python简单入门到适用」

首先什么是模块? 小伙伴们经常看我写的教程不难发现,前面我们用过几次模块就是sys的那个,其实python不仅标准库中包含了大量的模块(也被称之为准模块),还有大量的第三方模块,开发者也可以自己发…