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

GIT 撤销上次推送

注意:在执行下述操作之前先备份现有工作进度,如果不慎未保存,在代码编辑器中正在修改的文件下,使用Ctrl+Z 撤销试试

撤销推送的方法

情况 1:您刚刚推送到远程仓库

如果您的推送操作刚刚完成,并且没有其他开发者在此期间提交新的更改,可以使用以下方法撤销推送。

方法 1:强制推送回退到之前的提交

          1 找到推送前的最后一次提交的哈希值 使用以下命令查看提交历史,找到推送前的最后一次提交的哈希值(例如 abc1234):

git log --oneline

           2 强制推送回退到指定提交 使用以下命令将远程分支强制回退到指定提交:

git push origin <commit-hash>:<branch-name> --force

示例:

git push origin abc1234:master --force

这会将远程分支 master 的状态回退到提交 abc1234

方法 2:重置本地分支并强制推送

             1 重置本地分支到推送前的状态 如果您已经知道推送前的最后一次提交的哈希值(例如 abc1234),可以使用以下命令重置本地分支:

git reset --hard <commit-hash>

           示例

git reset --hard abc1234

       2 强制推送重置后的分支 将本地分支的状态强制推送到远程仓库:

git push origin --force
情况 2:其他开发者已经基于此推送进行了工作

如果其他开发者已经基于您错误推送的提交进行了工作,直接撤销推送可能会导致他们的工作丢失。在这种情况下,您需要采取更谨慎的方式:

  1. 与团队沟通

    • 通知团队成员暂停对相关分支的工作。
    • 确保所有人都了解即将进行的回退操作。
  2. 创建一个新的修复提交 而不是直接回退历史记录,可以通过创建一个新的提交来修复问题:

# 撤销最近一次提交,但保留更改
git revert HEAD
  • 这会在当前分支上创建一个新的提交,用于撤销最近一次提交的更改。
  • 推送这个新的提交到远程仓库:
git push origin master

注意事项

1 备份远程仓库

  • 在执行任何回退或撤销操作之前,请确保备份远程仓库的状态(例如通过克隆或导出)。
  • 如果远程仓库支持镜像克隆,可以使用以下命令备份:
git clone --mirror <HTTPS链接>

2 保护分支规则

  • 如果远程仓库启用了分支保护规则(如禁止强制推送),您需要先禁用这些规则,或者联系管理员协助完成操作。

3 协作开发的影响

  • 强制推送会改变远程分支的历史记录,可能会影响其他开发者的本地分支。
  • 其他开发者需要重新同步远程分支的状态,例如通过以下命令:
git fetch origin
git reset --hard origin/master

4 超大文件的后续处理

  • 如果您因为超大文件的问题而需要撤销推送,请在回退后彻底清理该文件的历史记录(参考之前的回答)。
  • 确保后续不再将超大文件提交到仓库中。

总结

  • 如果您刚刚推送到远程仓库并且没有其他开发者参与,可以直接通过 git resetgit push --force 撤销推送。
  • 如果其他开发者已经基于错误推送进行了工作,建议通过 git revert 创建一个新的修复提交,而不是直接回退历史记录。
  • 在执行任何操作之前,请务必备份远程仓库,并与团队充分沟通。

相关文章:

  • ai图片视频生成wan模型
  • 【Easylive】convertLine2Tree 方法详解
  • Keil5中的C/C++选项下的GUN extensions什么意思?
  • 微前端知识内容
  • [Kerberos] 简化的加密和校验和总则
  • MYSQL8.0以上版本 主从复制
  • C++11QT复习 (十)
  • 中科驭数受邀参展2025中关村论坛 DPU受主流媒体关注
  • 从 Java 到 Go:面向对象的巨人与云原生的轻骑兵
  • [250331] Paozhu 发布 1.9.0:C++ Web 框架,比肩脚本语言 | DeaDBeeF 播放器发布 1.10.0
  • Java 应用程序CPU 100%问题排查优化实战
  • Linux centos 7 常用服务器搭建
  • kubernetes安装部署k8s
  • RK3588使用笔记:导出做好的文件系统
  • Pytorch 张量操作
  • windowsmacOs安装minio
  • RAG系统实战:当检索为空时,如何实现生成模块的优雅降级(Fallback)?
  • 【JAVA】【疑难杂症解决!】org.springframework.transaction.UnexpectedRollbackException:
  • Mybatis-Plus学习笔记
  • Maven安装与配置完整指南
  • 沧州低空经济起飞:飞行汽车开启千亿赛道,通用机场布局文旅体验
  • Manus向全球用户开放注册
  • 睡觉总做梦是睡眠质量差?梦到这些事,才要小心
  • 《新时代的中国国家安全》白皮书(全文)
  • 上海交大计算机学院成立,设多个拔尖人才特色班
  • 演员发文抵制代拍获粉丝支持,媒体:追星“正确姿势”不妨多来点