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

Git 撤回已推送到远程的最近push

下面以撤销最近的两次push为例

方法一:使用 git revert 安全撤销(推荐,不改变历史)

git revert 会创建新的“撤销提交”,抵消指定提交的修改,不会删除原有历史,适合多人协作的公共分支。

步骤:

  1. 查看提交历史,获取要撤销的两次提交的哈希值 执行 git log --oneline 查看最近提交,例如:

    a1b2c3d (HEAD -> main, origin/main) 最近的第1次提交(要撤销)
    d4e5f6g 最近的第2次提交(要撤销)
    7h8i9j0 更早的提交(保留到此)

    记下前两个提交的哈希值:a1b2c3dd4e5f6g

  2. 依次撤销这两次提交(从新到旧)

    • 先撤销最近的第1次提交:

      git revert a1b2c3d

      会自动打开编辑器,输入撤销说明(操作:按 i 进入编辑模式,编写内容后按 Esc 退出,再输入 :wq 保存退出)。

    • 再撤销第2次提交:

      git revert d4e5f6g

      同样编辑并保存撤销说明。

  3. 推送撤销结果到远程

    git push origin main  # 替换为你的分支名

    此时远程仓库会新增两个“撤销提交”,原有两次提交的修改被抵消,历史记录完整保留。

方法二:使用 git reset 重置历史(谨慎使用,改写历史)

git reset 会直接删除指定提交,改写本地和远程历史,仅适合私人分支或确认无人基于该历史开发的情况

步骤:

  1. 重置本地分支到两次提交之前的状态 假设两次提交之前的基准提交哈希是 7h8i9j0(见步骤1的示例):

    git reset --hard 7h8i9j0  # --hard 会丢弃工作区修改,确保已备份
  2. 强制推送重置后的分支到远程 由于改写了历史,需要强制推送(使用 --force-with-lease--force 更安全,避免覆盖他人提交):

    git push origin main --force-with-lease  # 替换为你的分支名

注意事项:

  1. 公共分支优先用 revertreset 会删除远程历史,可能导致团队成员代码冲突,需提前沟通。

  2. 备份重要修改:执行操作前,建议用 git branch backup-branch 创建分支备份。

  3. 如果他人已拉取代码

    • 若用 revert:他人正常 pull 即可同步。

    • 若用 reset:他人需执行 git fetch origin + git reset --hard origin/main 强制同步(会丢失本地基于旧历史的修改)。

根据团队规范选择合适方式,优先保证协作安全。

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

相关文章:

  • 【数据结构入门】堆
  • NLP—词向量转换评论学习项目分析真实案例
  • 4.运算符
  • Docker命令及操作
  • imx6ull-驱动开发篇20——linux互斥体实验
  • 图解软件系统组成
  • 什么是iOS超级签名?为何它能解决企业签名的“掉签”难题?
  • 云原生高级---TOMCAT
  • [激光原理与应用-250]:理论 - 几何光学 - 透镜成像的优缺点,以及如克服缺点
  • 机器学习-集成学习(EnsembleLearning)
  • ETCD的简介和使用
  • 17、CryptoMamba论文笔记
  • 导入文件到iPhone实现
  • C++11-下
  • QT6 如何在Linux Wayland 桌面系统抓屏和分享屏幕
  • AT F-Intervals 题解
  • 深入理解数据库架构:从原理到实践的完整指南
  • DEA模型MATLAB实现(CCR、BCC、超效率)
  • 云原生应用的DevOps3(CI/CD十大安全风险、渗透场景)
  • LeetCode189~191、198~214题解
  • Day52 Java面向对象07 类与对象总结
  • 鸿蒙har包打包与引用,其它主工程entry引用本地har
  • 【19】万集科技——万集科技嵌入式,校招 一面,二面,面试问答记录
  • 【基于Redis的手语翻译序列存储设计】
  • 淘宝API列表:高效获取商品详情图主图商品视频参数item_get
  • Flutter path_provider的基本使用(读写文件)
  • 车规级霍尔开关芯片SC25891 | 为汽车安全带扣筑起高可靠性安全防线
  • 【MySQL】MySQL聚集索引与非聚集索引深度解析
  • 蚁剑--安装、使用
  • 基于跨平台的svg组件编写一个svg编辑器