Git第十三讲 Git重置和回滚更改

2023-10-26

在使用Git时,我们有时可能会犯错或者需要撤销之前的提交或更改。Git提供了一些强大的命令来重置和回滚更改,帮助我们管理项目的版本控制。本文将介绍如何使用Git进行重置和回滚操作。

重置到指定提交

重置(Reset)命令允许我们将分支的指针移动到指定的提交,同时可以选择如何处理之前的更改。这对于需要撤销提交或重新开始工作的场景非常有用。

要重置分支到指定提交,可以使用以下命令:

git reset <commit>

其中,<commit>是目标提交的哈希值、分支名或者其他引用。

重置命令有不同的选项,常用的包括:

  • --soft:移动分支指针到指定提交,但不改变工作目录和暂存区。之前的更改将被保留,可以重新提交。
  • --mixed:默认选项,移动分支指针和重置暂存区,但不改变工作目录。之前的更改将被取消暂存,需要重新添加到暂存区后才能提交。
  • --hard:最彻底的重置选项,移动分支指针、重置暂存区和工作目录,将之前的更改完全丢弃。慎用该选项,因为无法恢复丢失的更改。

例如,要将分支重置到前一个提交,并保留更改以重新提交,可以运行以下命令:

git reset --soft HEAD^

回滚提交

回滚(Revert)是撤销一个或多个提交的操作,而不是移动分支指针。回滚会创建一个新的提交,将之前提交的更改撤销,并将撤销的更改添加到项目历史中。

要回滚一个提交,可以使用以下命令:

git revert <commit>

其中,<commit>是要回滚的目标提交的哈希值。

回滚命令会打开默认编辑器,让你编写回滚提交的消息。保存并关闭编辑器后,Git将创建一个新的提交,将回滚的更改添加到项目历史中。

强制推送

在重置或回滚之后,由于分支历史发生了变化,你可能需要使用强制推送(force push)将更改推送到远程仓库。

注意:强制推送会覆盖远程分支上的历史,慎用该操作,并确保你知道自己在做什么。

要进行强制推送,可以使用以下命令:

git push -f

请注意,强制推送会替换远程分支上的历史,可能会导致其他人的工作丢失或冲突。在团队协作中使用强制推送时,请确保与团队成员进行充分沟通,并遵循协作流程。

小结

在Git中,重置和回滚操作为我们提供了管理项目版本的灵活性和控制能力。通过重置,我们可以移动分支指针,并根据需要处理之前的更改。通过回滚,我们可以撤销提交的更改,并将撤销的更改添加到项目历史中。但请记住,使用这些操作时要谨慎,并确保理解其影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git第十三讲 Git重置和回滚更改 的相关文章

  • 如何 git Blame 目录

    我想知道如何使用 gitblame 来知道谁创建了单个目录 当我尝试时 git blame DIRECTORY NAME I get fatal no such path DIRECTORY NAME in HEAD 顺便说一句 该目录是空
  • 如何从 Github 和 Bitbucket 上的 git 删除提交

    我不小心从 Django 项目中的 idea 目录中推送了文件 这些文件位于 gitignore 文件中 我正在尝试从我的 bitbucket 存储库中完全删除提交 因为我正在与该项目一起工作的其他人 并且他无法在不影响他自己的 idea
  • 拒绝 git 推送

    To email protected cdn cgi l email protection xxx xxxxx git rejected master gt master non fast forward error failed to p
  • 权限被拒绝(公钥)。无法从远程存储库读取。

    我很抱歉 但我不知所措 我尝试按照其他说明进行操作 但无济于事 希望我的帖子足够清晰 以便我能够得到如何解决的简洁步骤 我在文件夹 x 中有一个文件 test1 php 我在 x test1 php 中打开了一个 Git Bash 对话框
  • 在 shell 脚本中指示 git pull 的密码,无需 ssh?

    我写了一个shell脚本来进行项目发布Git 在shell脚本中我首先cd到 Git 工作副本 然后执行git pull origin master 但它提示我输入密码 git localhost s password 这很烦人 我想知道是
  • 非交互式“git flow release finish”

    我如何使用git flow release finish以不要求合并提交消息的方式 这 m正如我所料 flag 没有提供此功能 当然 目标是能够以不需要交互的方式编写脚本 可以设置环境变量 export GIT MERGE AUTOEDIT
  • 如何 git 推送 reflog?

    有没有办法将引用日志推送到远程 这似乎是一件非常有用的事情 但我不知道如何做到这一点 我正在设想类似的事情git push include reflogs 最后 我希望遥控器在推送时有一份引用日志的逐字副本 我尝试使用 mirror 但是
  • 我的朋友可以使用我的本地 git 存储库作为他的远程存储库吗?

    我的计算机上有一个本地 git 存储库 有没有可能我的朋友将他的上游设置为我计算机上的本地存储库 而我的本地存储库成为他的远程存储库 所以他将能够从我的本地存储库获取最新的更改并推送到我的本地存储库 我不想使用类似的工具github or
  • 比较当前文件版本和上一个远程存储库

    如何区分我的工作文件版本与远程存储库中的某些先前版本 假设我今天拉取 对本地副本执行 6 8 次提交 然后想要查看我的最新工作版本 给定文件 与远程或任何其他版本上的最新版本之间的差异 要查看 最新工作版本 我将其作为您的工作副本 之间的差
  • git - 如何在存储库级别隐藏特定文件的更改[重复]

    这个问题在这里已经有答案了 我们在 git 中有一个文件never想要改变 该文件具有产品附带的默认值 但是 当我们在本地运行构建过程时 该文件会发生更改 因此 当人们忘记并提交该文件时 该文件自然会一直被签入 是的 我知道这很愚蠢 但很难
  • 项目“ ”的目标位置已存在,无法移动项目

    当我尝试与 git 存储库共享我的项目时 出现这样的异常 项目的目标位置 已存在 无法移动项目 写一个答案是因为我尝试了许多类似问题中建议的许多选项 但没有一个起作用 然后我按照以下有效步骤手动完成了此操作 并且这些步骤适用于任何 Ecli
  • 通过 HTTP Post-Commit Hook 将 Github 连接到安全的 Jenkins

    我已经在我的测试服务器上使用 Github 插件设置了 Jenkins 我通过仅允许经过身份验证的用户 匿名用户没有任何权限 和安全连接来保护 Jenkins 不幸的是 Github 提供的提交后挂钩似乎不适用于我的情况 我尝试访问以下网址
  • 为什么我的散景图在 github 上不起作用?

    我在 github 上有一个私人仓库 并且正在尝试散景 我在本地编辑 ipython 笔记本中的文件 可以看到该图正在运行 当我将它们推送到 github 并尝试在线可视化时 我可以看到除图表之外的所有代码 在 nbviewer 上我可以看
  • 从 MINGW 启动时运行 System32 程序而不是 SysWOW64

    我正在尝试从从 minggw 启动的 shell 脚本文件创建 EXE 文件 从 gi t bash 使用 我的问题是当我运行这些命令时 C Windows system32 iexpress exe N C git install 64b
  • 仅当上一步已运行时才运行 GitHub Actions 步骤

    我已经在 GitHub actions 中设置了一个工作流程来运行我的测试并创建测试覆盖率的工件 我的 YAML 文件的精简版本如下所示 name Build on pull request jobs build runs on ubunt
  • 仅获取 git 远程存储库的标签/引用

    是否可以在不下载对象 文件的情况下获取存储库 例如 GitHub 的标签 引用 我的用例是打包某些软件的最新测试版 这些软件具有悠久的历史 因此很难克隆 理想情况下 在确定我希望使用的标签后 我可以 git clone b tag dept
  • 如何在 Visual Studio 2015 中创建新分支?

    我在 Visual Studio 2015 中将 Git 与 Visual Studio Online 结合使用 并试图弄清楚如何创建分支 这是网上常见的答案 https msdn microsoft com en us library h
  • 如何设置 git diff 中使用的分页器的制表符大小? [复制]

    这个问题在这里已经有答案了 我使用寻呼机most 看到 tabsize 8 的 diff 输出是很痛苦的 如何指定 tabsize 2 48 6 49 7 div class content inner div class clear di
  • 执行某些命令(如“prune”)时,Wincred 无法与 Git Bash(Git for Windows)正常工作

    我已经在 Windows 7 64 位中很好地设置了 GitforWindows 并将凭据管理器设置为 Wincred 然而 当我运行一些命令时 比如git remote prune origin在 GitBash 中 尽管运行命令 但它在
  • 获取存储库的当前版本

    我是 GIT 新手 但我不知道如何 获取存储库的版本 文件夹离线 获取存储库的最新版本 在线 我只能比较两者 但它没有给我任何有关版本的信息 git status 只需告诉我它是最新的 我怎样才能有这样的东西 Your version 1

随机推荐

  • JAVA BufferedWriter简单讲解

    JAVA缓冲流 BufferedWriter 简单讲解 BufferedWriter类是Writer的子类 它为了提高效率 加入了缓冲技术 将字符读取对象作为参数 BufferedWriter类将一个常量值作为默认缓冲区的大小 它同时也可以
  • 三相pwm整流器simulink仿真。 采用电压电流双闭环

    三相pwm整流器simulink仿真 采用电压电流双闭环 SVPWM调制 附带三篇参考文献 ID 4250669791519649
  • (Java 基础知识) Java反射

    本篇文章依旧采用小例子来说明 因为我始终觉的 案例驱动是最好的 要不然只看理论的话 看了也不懂 不过建议大家在看完文章之后 在回过头去看看理论 会有更好的理解 下面开始正文 案例1 通过一个对象获得完整的包名和类名 1 2 3 4 5 6
  • docker如何查看容器的挂载目录

    执行命令 docker inspect 容器ID grep Mounts A 20 Mounts Type bind Source root projects project dist Destination root share ngin
  • 利用Repeater控件显示主-从关系数据表

    本文介绍了一种利用Repeater控件显示主 从关系数据表的方法 原文参见 http support microsoft com default aspx scid kb en us 306154 NestedRepeater aspx
  • Lora配置

    文章目录 前言 一 LoRa是什么 二 使用步骤 总结 前言 随着物联网技术的发展 越来越多的应用场景需要进行数据传输和通信 而LoRa技术的出现 为长距离 低功耗 低速率的通信提供了一种可靠的解决方案 正点原子的LoRa模块 是一种基于S
  • Oracle 输出方式

    用过几次经常忘记 特此做个笔记 1 Oracle 输出没有sqlserver方便 直接print message 就行 而是需要放到 块 中输出 比如下面的匿名块 set serveroutput on declare begin dbms
  • pcm vlc 文件_VLC播放pcm

    Applications VLC app Contents MacOS VLC demux rawaud rawaud channels 1 rawaud samplerate 48000 rawaud fourcc s8 Users lz
  • 白银价格波动因素是什么?

    在白银产品的投资中 人们要更加全面的对市场进行了解 其中涉及到的范围比较广阔 只有对整个市场的发展和影响因素进行细致的分析 才可以更好的参与到白银产品的投资中 为了更好的获得实际性的利益 重点要对白银的价格进行细致的了解 这样使人们在投资时
  • 特别篇:input小结

    input 我们日常中在使用Python时都会使用input 在控制台进行输出 但是不知道大家发现没有 因为Python是一种动态语言 所以不会像Java中的Scanner类 在代码中可以控制输入的类型 所以当我们输入数字时 底层也会把我们
  • 程序流程图画法复习-三种循环语句(for,while,do while)

    程序流程图画法复习 1 程序流程图的作用 程序流程图的作用程序流程图的作用程序流程图的作用 程序流程图是人们对解决问题的方法 思路或算法的一种描述 流程图的优点 a 采用简单规范的符号 画法简单 b 结构清晰 逻辑性强 c 便于描述 容易理
  • HTTP请求行详解

    目录 一 认识URL 二 认识方法 2 1 GET方法 2 2 POST方法 2 3 其他方法 请求行也就是HTTP请求的第一行 接下来将对第一行内容进行详细解释 一 认识URL 平时我们俗称的 网址 其实就是说的 URL Uniform
  • 从0开始学PyTorch(一):线性回归、Softmax与分类模型、多层感知机

    文章目录 线性回归 模型 数据集 损失函数 优化函数 随机梯度下降 Softmax与分类感知机 softmax的基本概念 多层感知机 多层感知机的基本知识 隐藏层 表达公式 激活函数 线性回归 线性回归的基本要素 模型 为了简单起见 这里我
  • java文件下载接口,含泪整理面经

    Java如何入门 1 建立好开发环境 首先建立好开发环境非常重要 工欲善其事 必先利其器 做任何开发 首先就是要把这个环境准备好 之后就可以去做各种尝试 尝试过程中就能逐渐建立信心 初学者往往在环境配置中被各种预想不到的问题弄得很沮丧 这里
  • Python工业项目实战 04:数仓维度层DWS层构建

    知识点01 课程回顾 ODS层与DWD层的功能与区别是什么 ODS 原始数据层 存储格式 AVRO 数据内容 基本与原始数据是一致的 DWD 明细数据层 存储格式 Orc 数据内容 基于与ODS层是一致的 ODS层的需求是什么 自动化建库建
  • php怎么判断密码是否达标,php中简单的密码强中弱判断,php密码验证规则

    密码种类 1 小写字母 2 大写字母 3 数字 4 特殊符号 弱 1 中 2 强 3 或 4 长度 6 16个字符 区分大小写 1 长度判断 pwd len strlen password if pwd len gt 16 pwd len
  • 【华为OD机试】仿 LISP 运算【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 LISP 语言唯一的语法就是括号要配对 形如 OP P1 P2 括号内元素由单个空格分割 其中第一个元素 OP 为操作符 后续元素均为其参数 参数个数取决于操作符类型
  • 百度语音合成精简版

    我参照文档合成的源码下载 https download csdn net download qq 31939617 10388588 下载 文档 Android TTS SDK 集成进入helloworld 项目 一 简介 本文针对遇见集成
  • io流读写文件(文件内容修改)

    package cn sos psasps import java io BufferedReader import java io BufferedWriter import java io FileReader import java
  • Git第十三讲 Git重置和回滚更改

    在使用Git时 我们有时可能会犯错或者需要撤销之前的提交或更改 Git提供了一些强大的命令来重置和回滚更改 帮助我们管理项目的版本控制 本文将介绍如何使用Git进行重置和回滚操作 重置到指定提交 重置 Reset 命令允许我们将分支的指针移