当前位置: 首页 > ops >正文

git 撤销最近的几次push

要实现将远程仓库回退到最近5次push之前的状态,同时保留本地改动,可以按照以下步骤操作:

一、本地分支回退(保留改动)

# 1. 查看提交历史确认要回退的提交点
git log --oneline# 2. 回退到5次提交前的状态(保留本地改动)
git reset HEAD~5 --mixed
  • --mixed(默认参数)会将5次提交的改动保留在本地工作区,但不会提交到暂存区
  • 若想将改动保留在暂存区,可用 git reset HEAD~5 --soft

二、强制更新远程分支

# 强制推送覆盖远程分支历史
git push origin your_branch_name --force
  • 强制推送会删除远程仓库中最近5次提交记录
  • 需确保该分支没有其他协作者正在开发,否则会引发协作冲突

三、验证操作结果

# 查看本地与远程分支是否同步
git log --oneline
git fetch origin
git diff your_branch_name origin/your_branch_name

注意事项

  1. 备份当前状态
    操作前建议通过 git stash save "backup" 或创建新分支备份当前代码

  2. 协作风险提示
    若已有协作者拉取了这5次提交,需通知其用 git reset --hard origin/your_branch_name 同步状态

  3. 替代方案
    若需保留提交历史,可使用 git revert HEAD~4..HEAD 生成5个反向提交(需按提交顺序逆序执行)

  4. 恢复后处理
    本地保留的改动可选择性提交:

# 查看保留的改动
git status# 选择性提交部分文件
git add file1.txt file2.js
git commit -m "保留部分有效改动"

操作示意图

远程仓库状态: A ← B ← C ← D ← E ← F (HEAD)
操作后状态:   A (HEAD)
本地工作区:  保留B/C/D/E/F的所有改动

该方法通过重置本地分支指针并强制推送实现了远程历史回退,同时通过 --mixed 参数保留了所有改动在本地工作目录。若需要更安全的协作方案,建议改用 git revert 生成反向提交

http://www.xdnf.cn/news/7695.html

相关文章:

  • Linux系统编程-DAY01
  • 动态DNS管理:【etcd+CoreDNS】 vs【BIND9】便捷性对比
  • Profinet转RS485网关赋能热敏CTP冲版机:高精度数据交互的核心解码方案​​
  • C++静态函数错误解析与修复指南练习
  • 编程技能:字符串函数08,strcmp
  • 刚刚!2025年5月WOS期刊目录已更新,新增多本期刊,剔除1本SCI期刊,慎投!
  • 软件测试期末复习
  • 深入解析OrientDB:多模型数据库的技术优势与实际应用
  • 如何从不同位置将联系人导入 iPhone(完整指南)
  • STM32定时器简单采集编码器脉冲
  • 【ubuntu服务器显卡老是坏掉】
  • BGP边界网关协议
  • 9、AI测试辅助-代码Bug分析提示词优化
  • 静态代理有哪些优势
  • 深入理解指针(一)
  • HarmonyOS实战:3秒实现一个自定义轮播图
  • 纯前端实现 导入/导出/模板下载功能
  • 变频器如何通过Profibus DP主站转Modbus RTU/TCP接入到上位机
  • DeepSeek的走红,会不会带动芯片市场新一轮增长?
  • Java中的ImageIo支持webp解析
  • 小白成长之路-Linux磁盘管理(一)
  • 如何管理和优化内核参数
  • [IMX] 07.LCD 显示
  • 【高斯函数】
  • 驱动相关基础
  • leetcode刷题日记——从前序与中序遍历序列构造二叉树
  • MES管理系统电子看板驱动企业智能制造
  • python Numpy-数组
  • 探索nsupdate:动态DNS更新的终极指南
  • 码钉枪行业2025数据分析报告