Git怎么撤销commit提交_Git撤销已提交代码的方法【必看】

星枫姑娘_9641

星枫姑娘_9641

2026-04-02

1410人浏览

原创

撤销最近一次commit但保留工作区修改用git reset --soft head~1;改message推荐git commit --amend;已push需用git revert生成反向提交;误删文件可用git checkout head~1 -- file或git reflog找回;push失败时优先用git push --force-with-lease。

git怎么撤销commit提交_git撤销已提交代码的方法【必看】

撤销最近一次 commit,但保留工作区修改

用 git reset --soft HEAD~1,它只回退 commit 指针,不碰暂存区和工作区。适合刚提交完发现漏了文件、或者想改 commit message 的情况。

常见错误是误用 --hard,结果把刚写的代码也清掉了;--mixed(默认)会重置暂存区,导致已 git add 的文件变成未暂存状态,容易漏提交。

  • 如果只想改 message,直接 git commit --amend 更安全,不用记参数
  • HEAD~1 可换成具体 commit hash,比如 git reset --soft abc1234
  • 这个操作只影响本地仓库,push 过的记录不会被自动覆盖

已经 push 到远程,怎么安全撤回

不能直接 git reset --hard 后强制 push,除非你确定没人基于那个 commit 继续开发。更稳妥的做法是 git revert:它生成一个新 commit,内容是“把上次提交的改动全部反向应用”。

比如撤销最近一次提交:git revert HEAD;撤销某次特定提交:git revert abc1234。这个操作不改变历史线性结构,适合团队协作环境。

  • 如果要撤销连续多个 commit,用 git revert HEAD~2..HEAD(注意是两个点,不是三个)
  • revert 可能触发冲突,尤其是被撤销的 commit 修改过后来又被改过的文件
  • revert 后记得 git push,不需要 --force

误删文件后 commit 了,怎么找回

如果只是删了文件并 commit,没做其他操作,最快是 git checkout HEAD~1 -- path/to/file,从上一个 commit 把文件取回来,再重新 add & commit。

Lovefromio Github
Lovefromio Github

使用 `gh` CLI 与 GitHub 交互。通过`gh issue`、`gh pr`、`gh run` 和 `gh api` 管理 issue、PR、CI 运行以及高级查询。

下载

但如果已经 reset 或 revert 过多次,HEAD 指针可能不对,就得找原始 commit hash。用 git reflog 查操作日志,找到删文件前的 commit 记录,再 git checkout abc1234 -- file。

  • git checkout 在 Git 2.23+ 被标记为“deprecated”,但目前仍可用;替代方案是 git restore --source=HEAD~1 -- file
  • 注意 git checkout 后面的 -- 不能省,否则 Git 可能把它当成分支名解析
  • 如果文件在多个 commit 中被反复修改,reflog 是唯一能快速定位“删之前最后一次存在”的方式

撤销 commit 后 push 失败:rejected non-fast-forward

这是 Git 在阻止你用非快进方式覆盖远程历史。出现说明你本地做了 reset 或 rebase,而远程已有别人基于原 commit 的新提交。

强行覆盖要用 git push --force-with-lease(推荐),它比 --force 安全:如果远程有你不知道的新提交,会中止推送,避免意外覆盖他人工作。

  • 永远不要对公共分支(如 main、develop)用 --force
  • --force-with-lease 不起作用时,先 git fetch,看是否有人新推了东西,再决定是合并还是协调
  • 有些团队禁用 force push,这时只能用 revert 补救

真正麻烦的不是撤销动作本身,而是搞不清当前 HEAD 指向哪、有没有人基于你的 commit 继续开发、以及远程分支是否受保护。多看一眼 git log --oneline -n 5 和 git status,比背命令有用得多。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
C++ 智能指针与现代内存管理
C++ 智能指针与现代内存管理

深入讲解 C++ 现代内存管理的核心工具——智能指针,涵盖 unique_ptr 独占所有权语义、shared_ptr 引用计数机制与循环引用问题、weak_ptr 弱引用的应用场景、make_unique/make_shared 工厂函数的性能优势、自定义删除器的编写、RAII 资源管理思想的实践,以及从裸指针迁移到智能指针的重构策略,帮助开发者编写安全无泄漏的现代 C++ 代码。

2026.04.23

299

31

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

5179

9

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1600

6

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

2023.07.24

914

5

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3377

7

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3041

6

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

80

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

40

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

20

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 7.9万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.8万人学习