git撤销第一次commit

前言

使用git时会遇到的情况是很多样的,需要记住的命令不是一般的多,为了方便下次遇到类似情况可以快速找到应该采用的命令,我决定把具体情况时要使用到的命令记录下来。

这次碰到的具体情况是,我才为我的后端springboot项目创建了本地仓库,进行第一次提交,误把application.yml中的敏感信息(如阿里云oss访问密钥)提交到了仓库中😢

与一般情况的不同之处

这种情况与正常的有多次提交撤销最近一次提交的处理方式是不同的,我们试着理解一下

有多次提交撤销最近一次

有多个commit

sql 复制代码
commit A (first) <- commit B <- commit C (HEAD)

每个commit都会有一个parent指针指向前一个commit。 我们的目标是删除commit C,那么只需要使得HEAD移动到当前HEAD的parent commit即可。

这样commit C虽然任然存在,但是不会再被引用,相当于删除了,变成了如下情况

sql 复制代码
commit A (first) <- commit B (HEAD) <- commit C

撤销第一次提交

但是我的情况是,只有一个commit

sql 复制代码
commit A (HEAD, first)

如果我按照多次提交撤销最近一次的方法的话,会发现回不到HEAD的parent commit

解决方法

我们可以执行以下指令

sql 复制代码
git update-ref -d HEAD

执行前后对比

rust 复制代码
# 之前
HEAD -> refs/heads/master -> commit A
​
# 之后  
HEAD -> (deleted)
refs/heads/master -> (deleted)
commit A -> (仍存在但无引用)

执行结果就是

  • HEAD引用被删除: 不再指向任何commit
  • master分支被删除: 分支引用消失
  • commit对象保留: commit A 的数据还在.git目录中
  • 工作目录不变: 您的文件完全不受影响
相关推荐
番茄灭世神2 小时前
Git入门使用学习
git·gitee·软件工程·计算机专业入门
南_山无梅落3 小时前
团队协作高频Git实用手册(项目实战版)
git·团队开发
就叫飞六吧3 小时前
git提取当前分支指定文件历史版本
git
数字游民95273 小时前
网站备案全流程回放(腾讯云)
人工智能·git·github·腾讯云·网站备案·waytoopc
Albert Edison4 小时前
【Git】多人协作一(同一分支下)
git·vscode·svn·github
学好statistics和DS4 小时前
Git 同步冲突
大数据·git·elasticsearch
德彪稳坐倒骑驴17 小时前
Git常用命令
git
无限进步_17 小时前
【C语言&数据结构】对称二叉树:镜像世界的递归探索
c语言·开发语言·数据结构·c++·git·算法·visual studio
qq_54702617920 小时前
Git 使用指南
git
XiaoHu020721 小时前
Linux多线程(详细全解)
linux·运维·服务器·开发语言·c++·git