Git撤销上一次提交(撤销提交,Git回退提交)git reset、git revert

文章目录

  • Git撤销上一次提交?这篇保姆级指南帮你安全"后悔"✨
    • [🌟 为什么需要"撤销提交"?](#🌟 为什么需要“撤销提交”?)
    • [🔑 场景一:本地提交(未推送),想保留代码修改](#🔑 场景一:本地提交(未推送),想保留代码修改)
    • [🗑️ 场景二:本地提交,彻底丢弃所有修改](#🗑️ 场景二:本地提交,彻底丢弃所有修改)
    • [🌐 场景三:提交已推送到远程(团队协作场景!)](#🌐 场景三:提交已推送到远程(团队协作场景!))
    • [📝 附加场景:仅修正上一次提交(非撤销)](#📝 附加场景:仅修正上一次提交(非撤销))
    • [📊 速查对比表](#📊 速查对比表)
    • [💡 终极避坑指南](#💡 终极避坑指南)
    • [❤️ 最后的小温暖](#❤️ 最后的小温暖)

Git撤销上一次提交?这篇保姆级指南帮你安全"后悔"✨

💡 一句核心原则:未推送用 reset,已推送用 revert

操作前先备份!本文附场景对比表+避坑指南


🌟 为什么需要"撤销提交"?

  • 提交信息写错/漏写关键内容
  • 误提交了敏感文件或调试代码
  • 发现逻辑有误需重新整理
  • 团队协作中需安全回退

别慌!Git 提供了精准的"后悔药",但用错命令可能丢代码。下面分场景详解👇


🔑 场景一:本地提交(未推送),想保留代码修改

适用 :刚 git commit 但还没 git push,想修改提交内容或信息

安全操作

bash 复制代码
# 保留修改在【暂存区】(推荐!可直接重提交)
git reset --soft HEAD~1
git commit -m "修正后的提交信息"

# 或保留修改在【工作区】(需重新 git add)
git reset HEAD~1  # --mixed 是默认参数,可省略

💡 HEAD~1 = 上一次提交(也可用 git log 查看 commit hash 替代)


🗑️ 场景二:本地提交,彻底丢弃所有修改

⚠️ 警告:此操作不可逆!代码将永久删除

仅当确认不需要本次提交的任何内容时使用

bash 复制代码
git reset --hard HEAD~1

操作前必做

bash 复制代码
git branch backup-before-reset  # 先建备份分支!

🌐 场景三:提交已推送到远程(团队协作场景!)

黄金法则:绝不直接 reset + force push!

安全方案:用 revert 生成"反向提交"

bash 复制代码
git revert HEAD          # 撤销最近一次提交
# 或指定 commit hash:
git revert a1b2c3d

# 按提示编辑撤销提交信息 → 保存退出
git push                 # 正常推送,无风险!

优势

  • 历史记录完整(原提交 + 撤销提交)
  • 不破坏他人本地仓库
  • 团队协作零冲突

📝 附加场景:仅修正上一次提交(非撤销)

漏加文件 / 改提交信息

bash 复制代码
# 补加文件后修正
git add missed-file.txt
git commit --amend --no-edit  # 保留原信息

# 或直接改提交信息
git commit --amend -m "全新提交信息"

⚠️ 若已推送:需 git push -f(仅限个人分支!团队分支请用 revert)


📊 速查对比表

场景 命令 保留代码? 影响远程? 安全等级
本地修正提交 git reset --soft HEAD~1 ✅ 暂存区 ⭐⭐⭐⭐
本地丢弃提交 git reset --hard HEAD~1 ⭐⭐(高危!)
已推送安全撤销 git revert HEAD ✅(新提交抵消) ✅(新增提交) ⭐⭐⭐⭐⭐
修正提交内容 git commit --amend ⚠️ 需强制推送 ⭐⭐⭐(个人分支)

💡 终极避坑指南

  1. 操作前必备份
    git branch safe-backup ------ 5秒拯救未来

  2. 确认提交状态
    git log --oneline -3 + git status 看清再操作

  3. 团队协作铁律

    • 公共分支(main/dev):只用 revert
    • 个人分支:谨慎使用 reset + push -f(提前告知队友!)
  4. 误操作急救

    bash 复制代码
    git reflog          # 查看所有HEAD变动记录
    git reset --hard abc123  # 通过commit hash紧急恢复

❤️ 最后的小温暖

"Git 的设计哲学不是惩罚错误,而是赋予你修正的自由。"

------ 每个开发者都曾手抖过,重要的是学会安全地"后悔"

相关推荐
wdfk_prog2 小时前
解决 `git cherry-pick` 引入大量新文件的问题
大数据·git·elasticsearch
fu的博客4 小时前
Git从删库到跑路
git·gitee·github
要加油哦~5 小时前
git 报错 | husky - pre-commit hook exited with code 1 解决
git
知识即是力量ol5 小时前
Git 实战指南:从分支管理到冲突解决
git·github·源代码管理
weixin_4624462317 小时前
Git 本地忽略 application-dev.yml 的最佳实践:不提交 .gitignore,不影响团队协作!
git
无限进步_1 天前
面试题 02.02. 返回倒数第 k 个节点 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
2401_859049081 天前
git submodule update --init --recursive无法拉取解决
前端·chrome·git
是店小二呀1 天前
Git 深度学习笔记:从初始化到核心操作机制解析
笔记·git
xlq223221 天前
11.git_gbd
git