专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
芋道源码  ·  一款轻量级的服务器监控神器,开箱即用! ·  21 小时前  
芋道源码  ·  DeepSeek,又杀疯了! ·  2 天前  
芋道源码  ·  DeepSeek R1本地化部署 ... ·  2 天前  
Java编程精选  ·  SpringCloud远程调用为啥要采用HT ... ·  4 天前  
芋道源码  ·  升级 JDK17 一个不可拒绝的理由! ·  3 天前  
51好读  ›  专栏  ›  芋道源码

一文讲清各种场景下 Git 如何回退

芋道源码  · 公众号  · Java  · 2024-11-10 18:04

主要观点总结

这是一篇关于社群交流、项目实战、开源项目和Git版本控制工具使用的文章,包括一对一交流、面试小册、简历优化、求职解惑等内容,并提供了部分资料和教程链接。文章还介绍了Git中常用的命令如reset、revert和checkout的用法和原理。

关键观点总结

关键观点1: 社群交流及资源分享

文章介绍了一个有用的社群,提供了一对一交流、面试小册等资源,并分享了部分开源项目和教程链接。

关键观点2: 项目实战及学习指南

文章提供了一些项目实战的资料和教程,包括系统架构设计、Java学习指南等,帮助读者提升技术能力。

关键观点3: Git命令介绍及应用场景

文章详细介绍了Git中的几个常用命令如reset、revert和checkout的用法和原理,并列举了它们在不同场景下的应用,如commit前回退、commit后回退、push后回退等。


正文

👉 这是一个或许对你有用 的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入 芋道快速开发平台 知识星球。 下面是星球提供的部分资料:

👉 这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本

来源:blog.csdn.net/u011709538
/article/details/139264216


一、commit 前回退

场景:当我们在工作区做了一些改动,或者ADD了一些新文件,但还没有提交时

1. 整个工程回退

此时如果我们想整个工程回退到上一个提交版本,可以使用 reset 或 checkout,如

git reset --hard HEAD

我们在这里使用了 – hard , 这样会丢弃工作区的所有改动以及暂存区的新增文件,并将指针移动到上一个提交版本,即把所有文件恢复至上一个提交点。

2. 单个文件回退

但有的时候我们仅仅是一个文件搞砸了,不需要回退整个工程,仅需要回退某个文件到上次提交点的话,可以使用 checkout 把某次提交的某个文件给取出来

git checkout  -- 

比如 我们想将example.txt文件回退到上一次 commit 的状态,就可以这么用

git checkout -- example.txt

如果你使用IDEA的话,则可以使用里面的 Rollback 操作达到同样的效果

3. 新增文件回退

对于一些新文件,如果已经ADD过,那么它就进入了暂存区,如果想把它从暂存区移出来,可以通过命令来实现

git reset HEAD 

或者Idea的 Rollback 此时也有同样的效果

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

二、commit 后回退

场景:如果我们比较不幸,把使用 commit 后,才发现有错误,我们就需要把本地仓库也回退掉了

1. 回退到上个版本

我们可以使用以下命令撤销上一次提交

git revert HEAD

这会创建一个新的提交,将上一次提交的改动反转回去。如果你使用Idea的话,可以直接在提交记录中进行 Revert Commit

需要注意的是,这并非真正意义的撤销提交 ,而是把原始内容重新覆盖回去,所以revert会产生一次新的提交记录。而如果想要真正的“撤销提交”,可以使用IDEA中的 Undo Commit

这其实是运用了下面的 git reset --soft 机制,回退并保留工作区的代码

2. 回退到指定版本并放弃后续修改

当然有的时候我们发现的时候,本地已经commit了好几次了,这个时候我们想回到某一次提交的版本,就需要自己指定了回退的位置了

git reset --hard 

其中是需要回退到的提交版本的哈希值,每一次提交的 hash 值我们都可以在 git log 里看到,这会丢弃指定版本之后的所有提交,并将指针移动到指定版本。Idea 的话可以这么操作

或者在Log中直接选择对应的提交记录进行 reset,两种方式都一样

3. 回退到指定版本但保留工作区

如果我们commit后才发现错误,其实我们更常见的想法是,回溯-改掉-重新提交,那么我们就要求回溯后,我们本地的代码不会跟着回退,我们可以基于目前的代码改完后再次提交。这样我们就可以这么用

git reset --soft 

这样我们本地仓库的位置会停留在你指定的提交点,但是工作区的东西不会受到影响。IDEA的操作和上面一样,只是弹窗里选择 Soft 即可

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

三、push 后回退

场景:当我们在本地误操作后,没有及时发现,已经将错误内容push到远程仓库时

一般来说,push上去,按严重程度可分为两种情况,

  • push 进特性分支或自己的独立分支,但没有 merge 进主分支
  • push 后,错误代码已经进入主分支

在团队开发中,一般当错误被误push进主分支时,情况就比较严重了,此时为了避免问题复杂化,或引起不必要的冲突,强烈建议其他组员暂停向该分支合并

此时若要修复,其实就是下面这两步

1. 修复本地内容

这一步其实就是上面提到的《commit 后回退》章节,可以自己选一种方式来修复

2. 推送至远程

本地修改好以后,再将本地回退的修改强制推送到远程仓库,就使用push命令

git push origin 

git push -f origin 

请注意,如果使用了 git push -f 命令来强制推送修改,这 可能会导致他人的工作丢失 。因此,在执行此操作前,请确保与团队成员进行充分的沟通,并确保你有足够的理由和权利来修改远程仓库的历史记录。

四、恢复误删分支

如果我们误删除了一个分支,可以使用以下命令进行恢复:

git reflog

这会列出所有的提交历史,找到被删除的分支的最后一次提交的哈希值。然后使用以下命令进行恢复:

git branch  

其中是需要恢复的分支名称,是被删除分支的哈希值。这会重新创建被删除的分支。

五、回退命令对比







请到「今天看啥」查看全文