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

Git撤销指定commit并更新远端仓库

Git撤销指定commit并更新远端仓库

一、撤销指定commit

1.首先执行git log 命令,查看git历史提交以及commit信息:
在这里插入图片描述

由于需要脱敏,所以截图可能看得马赛克比较多,需要关注的就是上面的commit后跟的id,以及HEAD当前指定的位置。

现在我希望能将最新的这个commit,也就是commit id开头为19e589bba…的commit 执行撤销,并将撤销更新到远端仓库上,要如何实现呢?

2.执行git reset —soft <commit id> 命令,这里的commit id是你希望HEAD新指向的commit id。
比如,本次我想撤销的是id开头为19e589bba…的commit,则我的git reset命令就需要这样写:

git reset --soft 23818c51cc7d0aefbad8ea...

执行上面的命令后,会显示提示:

HEAD is now at 23818c51c [Improve] [connector-file-base] ....

说明现在的HEAD指针已经指向了我们指定的commit,就不是原先的commit,从而实现了我们本案例的目的:对最新的commit进行撤回。

3.执行git log命令验证commit历史提交
在这里插入图片描述

可以看到,现在HEAD已经指向了我们指定的commit。

4.为了在远端仓库同步更新,需要将撤销进行push。执行:

git push --force origin <branch_name>

branch_name为你要提交到的远端仓库分支名。至此,撤销commit的过程就完成了,可以在远端仓库发现最新的commit被撤回了。

需要注意的是,—force可能需要慎用,比如提交的代码有冲突的话,—force可能会将别人的代码给覆盖掉。

二、git reset 参数

git reset 命令有以下几个主要的参数:
soft:当使用这个参数时,Git会将HEAD指针移到指定提交,但是不会改变索引(指暂存区)和工作目录,你的所有改动都会从暂存区(索引)和工作目录转移到未暂存的更改。这就意味着,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。

mixed这是git reset的默认行为,如果不提供任何参数这就是它会做的。此参数会将HEAD指针移到指定提交,更新索引(指暂存区),但是不会触碰工作目录。这意味着你在提交以前作了的所有改动将会转移至未暂存的更改。

hard:这个参数将HEAD指针移到指定提交,更新索引(暂存区),并且更改工作目录以匹配指定提交。如果你使用–hard参数并指定一个提交,那么在指定提交之后做的所有更改都将会丢失(代码也回到了那个版本时的代码)。

注意:git reset 是一个强大且可能有害的命令,所以在使用之前应当明白其后果并且要注意安全地使用。


http://www.mrgr.cn/news/83075.html

相关文章:

  • 行情系统用什么数据库好
  • 数据库中的 DDL、DML 和 DCL
  • vue3使用vue3-video-play播放m3u8视频
  • 2024信息安全网络安全等安全意识(附培训PPT下载)
  • 【大模型+本地自建知识图谱/GraphRAG/neo4j/ollama+Qwen千问(或llama3)】 python实战(中)
  • 什么是 ES6 “模板语法” ?
  • 最近在盘gitlab.0.先review了一下docker
  • 总结2024,迎接2025
  • 江科大STM32入门——SPI通信笔记总结
  • leetcode热门100题1-4
  • 生成模型:变分自编码器-VAE
  • 导航技术的分类
  • 创建型模式-原型模式
  • MySQL笔记大总结20250108
  • GDPU Android移动应用 重点习题集
  • 联邦学习LoRA:推理合并权重公式:以及变体
  • uni-app 资源引用(绝对路径和相对路径)方法汇总
  • 【网络协议】开放式最短路径优先协议OSPF详解(四)
  • 25/1/4 算法笔记<强化学习> 生成对抗模仿学习
  • 【C语言】_指针与数组
  • “深入浅出”系列之FFmpeg:(1)音视频开发基础
  • 【网络协议】IPv4 地址分配 - 第二部分
  • 【51单片机】02LED流水灯实验
  • 【网络协议】静态路由详解
  • Qt 5.14.2 学习记录 —— 칠 QWidget 常用控件(2)
  • Unity中 Xlua使用整理(二)