如何安全删除 GitHub 提交记录及其操作步骤
目录
- 前言
- 1. 基本知识
- 2. Demo
前言
🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF
1. 基本知识
- 提交记录 (Commit History): 每次提交代码时,Git 会生成一个提交对象,包含提交的变更、提交信息、提交时间和提交人等信息
-
~
本地仓库:开发者的工作目录及本地 Git 仓库
- 远程仓库:GitHub、GitLab 等托管服务上的仓库
- HEAD 指针: 指向当前分支的最新提交,回滚提交就是移动 HEAD 指针到指定的提交记录
基本的命令如下:
git reset 命令
git reset 是修改提交记录的核心命令,主要有以下模式:
-
--soft
删除提交记录,但保留代码更改在暂存区
适合需要修改最后几次提交内容时使用 -
--mixed(默认模式)
删除提交记录,并将更改移动到工作区
提交被撤销,但代码保留 -
--hard
删除提交记录,清除所有更改
注意:操作不可逆,需谨慎使用
强制推送 (git push --force)
本地提交记录修改后,远程仓库的历史会与本地不一致。强制推送将覆盖远程仓库的历史,与本地保持一致。
风险:可能会导致其他开发者无法正常拉取代码
2. Demo
查看提交记录:git log --oneline
示例输出:
a1b2c3d 第三次提交
e4f5g6h 第二次提交
i7j8k9l 第一次提交
目标:删除最近两次提交,保留 i7j8k9l
-
使用 --soft :
git reset --soft HEAD~2
提交记录回退到 i7j8k9l,最近两次提交的代码仍保留在暂存区 -
使用 --mixed :
git reset --mixed HEAD~2
提交记录回退到 i7j8k9l,最近两次提交的代码保留在工作区,但未暂存 -
使用 --hard(高风险):
git reset --hard HEAD~2
提交记录和对应代码更改均被清除,无法恢复
最后需要强制推送到远程:git push origin master --force