• 撤回仓库的提交


    结论先行

    • 未推送提交:可以使用 git reset --soft HEAD~1git reset --hard HEAD~1 来撤回提交,选择保留或丢弃修改。
    • 已推送提交:可以使用 git reset --soft HEAD~1 后,通过 git push --force 强制覆盖远程的提交记录。

    问题描述

    我把一个代码修改提交到了 本地的test分支上,但是我现在想撤回,不想提交了,要怎么办

    解决

    如果你已经将代码提交到本地的 test 分支上,但现在想撤回提交,有以下几种方式可以选择,具体取决于你是否已经推送了提交到远程仓库。

    1. 撤回未推送的提交

    如果你提交了代码但还没有推送到远程仓库,想要撤回,可以使用以下方法:

    使用 git reset 撤回提交

    git reset 可以撤回最近的提交并保留修改在工作区中。

    git reset --soft HEAD~1
    
    • --soft:撤销提交,但保留代码变更在暂存区(相当于你还没有 git add 的状态)。
    • HEAD~1:表示回退到当前提交的前一个提交。

    结果:
    你的提交记录会被撤销,但代码依然存在,可以继续修改或选择不提交。

    使用 git reset --hard 完全撤销

    如果你不仅想撤回提交,还想丢弃代码修改,可以使用 --hard

    git reset --hard HEAD~1
    
    • --hard:不仅撤销提交,还会清除工作区的所有修改。

    注意:
    使用 --hard 会丢失未保存的修改,所以要谨慎使用。

    2. 撤回已经推送到远程的提交

    如果你已经将提交推送到远程仓库,还可以撤回提交,但需要使用 git push --force

    使用 git reset 回退并强制推送

    首先,使用 git reset 撤销本地提交:

    git reset --soft HEAD~1
    

    然后,强制推送到远程仓库,覆盖已经推送的提交:

    git push --force
    

    注意:
    强制推送会覆盖远程仓库的历史记录,其他开发者如果基于这些提交做了修改,可能会造成问题,所以在多人协作时需要小心使用。


    总结:

    • 未推送提交:可以使用 git reset --soft HEAD~1git reset --hard HEAD~1 来撤回提交,选择保留或丢弃修改。
    • 已推送提交:可以使用 git reset --soft HEAD~1 后,通过 git push --force 强制覆盖远程的提交记录。
  • 相关阅读:
    【Edge】微软Edge每次启动自动导入Chrome收藏夹,无法取消“每次启动浏览器时导入浏览数据”功能的解决方法(202311)
    SpringBoot 整合 H2 嵌入式关系型数据库
    瀚高数据库开机自启动失败
    001.Python3.10+Pycharm2022.2环境搭建、pip使用
    python基础教程:异常处理
    form-create表单生成器简单使用
    uniapp 处理 分页请求
    Java项目:失物招领管理系统(java+SSM+HTML+JavaScript+jsp+mysql)
    Java项目:SSM实现的在线农产品商城
    【数仓】大数据开发全流程 - 实习总结
  • 原文地址:https://blog.csdn.net/weixin_63681863/article/details/142181901