news 2026/6/15 21:08:35

git如何撤销上次上传的内容

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
git如何撤销上次上传的内容

在 Git 中取消上一次提交的操作,需根据是否已推送到远程仓库以及想要的取消程度(保留修改 / 彻底删除修改)选择不同方法,以下是最常用的几种场景和操作:

一、场景 1:仅本地提交,未推送到远程仓库(最常见)

这种情况只需修改本地提交记录即可,操作风险低,主要有 3 种需求对应的方法:

1. 取消提交,但保留修改内容(推荐)

如果你只是提交信息写错,或者想把这次的修改和其他修改合并后再提交,保留工作区和暂存区的修改,仅撤销提交动作:

bash

运行

git reset --soft HEAD^
  • 解释
    • HEAD^表示上一个提交(也可以用HEAD~1~2表示上两个,以此类推)。
    • --soft:仅撤销提交,修改的文件会保留在暂存区git status会显示为已暂存状态)。
  • 若想让修改回到工作区(未暂存状态),改用:

    bash

    运行

    git reset --mixed HEAD^ # --mixed 是默认值,可省略,直接写 git reset HEAD^
2. 彻底取消提交,且删除所有修改(谨慎使用)

如果你想彻底丢弃上一次提交的所有修改,恢复到上一次提交的干净状态:

bash

运行

git reset --hard HEAD^
  • 警告--hard会直接删除工作区和暂存区的所有修改,且无法恢复(除非用git reflog找回),务必确认修改无需保留后再使用。
3. 修正上一次提交的信息(无需取消,直接修改)

如果只是提交信息写错,无需取消提交,直接修改最后一次提交的信息即可:

bash

运行

git commit --amend
  • 执行后会打开编辑器,修改提交信息后保存退出即可。
  • 若只想修改信息且暂存区无新修改,也可直接用:

    bash

    运行

    git commit --amend -m "新的提交信息"

二、场景 2:已推送到远程仓库(需谨慎,避免影响协作)

如果提交已经推送到远程仓库(如 GitHub/GitLab),此时直接reset本地提交后,需要强制推送才能覆盖远程记录,但这会改写远程提交历史,如果是多人协作的仓库,可能导致他人的提交冲突,需格外注意。

1. 先本地撤销提交,再强制推送(不推荐多人协作场景)

bash

运行

# 第一步:本地撤销提交(根据需求选 --soft/--mixed/--hard) git reset --hard HEAD^ # 第二步:强制推送到远程仓库(覆盖远程记录) git push -f origin 分支名 # 例如 git push -f origin main
  • 风险:如果其他开发者已经拉取了你之前的提交,强制推送后他们的本地仓库会与远程不一致,需要解决冲突。
2. 用反向提交(Revert)撤销(推荐多人协作场景)

为了不改写历史,更安全的方式是创建一个新的提交,该提交的内容是 “撤销上一次提交的所有修改”,这种方式不会改变原有历史,对协作更友好:

bash

运行

# 创建反向提交,撤销上一次提交(HEAD^ 表示上一次提交) git revert HEAD^ # 推送到远程仓库 git push origin 分支名
  • 解释git revert会生成一个新的提交,内容是抵消目标提交的修改,比如上一次提交添加了一行代码,revert就会删除这行代码。
  • 若要撤销最近一次提交,直接用git revert HEAD即可。

三、额外技巧:找回误删的提交(git reflog)

如果不小心用git reset --hard删了重要提交,可以通过git reflog找回提交记录:

bash

运行

# 查看所有提交记录(包括被撤销的) git reflog # 恢复到指定的提交版本(例如版本号是 a1b2c3d) git reset --hard a1b2c3d

总结

场景推荐操作
本地未推送,保留修改git reset --soft HEAD^
本地未推送,彻底删除修改git reset --hard HEAD^
本地未推送,修正提交信息git commit --amend
已推送到远程,多人协作git revert HEAD^+git push
已推送到远程,单人仓库git reset --hard HEAD^+git push -f

核心原则:多人协作的仓库尽量避免改写历史,优先用 revert;单人仓库可灵活用 reset

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 19:22:12

K6 性能测试教程:常用功能 - HTTP 请求,指标和检查

这篇文章详细介绍了 K6 中的 HTTP 请求(http request)功能,解析了常用的性能指标和检查功能。通过 HTTP 请求模拟用户行为,了解性能指标以评估系统响应。文章还深入讲解了如何配置和执行检查,确保性能符合预期标准。无…

作者头像 李华
网站建设 2026/6/15 14:42:10

NVIDIA显卡疑难杂症:全面诊断与修复指南

导言 NVIDIA 显卡是驱动现代游戏、创意设计和科学计算的强大引擎。无论是追求流畅的游戏帧率,还是需要稳定的渲染输出,或是进行高效的并行计算,一块设置得当的显卡都是关键。然而,复杂的软硬件环境有时会导致各种问题&#xff0c…

作者头像 李华
网站建设 2026/6/15 14:33:02

Web安全测试详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 随着互联网时代的蓬勃发展,基于Web环境下的应用系统、应用软件也得到了越来越广泛的使用。目前,很多企业的业务发展都依赖于互联网&…

作者头像 李华
网站建设 2026/6/15 11:48:24

SGMICRO圣邦微 SGM2036-1.1YN5G/TR SOT23-5 线性稳压器(LDO)

特性工作输入电压范围:1.6V至5.5V固定输出电压:0.8V、0.9V、1.0V、1.05V、1.1V、1.2V、1.3V、1.35V、1.5V、1.8V、1.85V、2.1V、2.2V、2.3V、2.5V、2.6V、2.7V、2.8V、2.85V、2.9V、3.0V、3.1V、3.3V、3.6V、4.2V、4.4V和5.0V输出电压可从0.8V调节至5.0V…

作者头像 李华
网站建设 2026/6/15 11:45:58

用企业微信SCRM洞察朋友圈:能看到谁看了朋友圈吗?

企业微信朋友圈数据追踪:2026年私域运营的挑战 企业微信作为私域运营的核心工具,朋友圈功能是连接客户的重要触点。但多数企业面临一个关键问题:发了朋友圈,却不知道谁看了、哪些内容被关注、客户对哪些产品感兴趣。2026年&#x…

作者头像 李华