百木园-与人分享,
就是让自己快乐。

工作 3 年的同事不知道如何回滚代码,我真是醉了。。

公司一个工作了 3 年的新同事,问我怎么回滚他刚刚修改过的代码,他说弄了半天不会,之前用的 SVN,没用过 Git,说 Git 好难弄,我真是醉了。。

回滚代码是我们程序员经常要操作的,使用 SVN 是很简单,但使用 Git 也并不难,Git 也有很多好用的客户端(比如:Sourcetree),简单回滚操作都是没问题的。

如果你喜欢用 Git 命令行,也可以使用 git revert 这种,但它是有回滚痕迹的,会多一个提交记录,今天栈长就介绍一些没有痕迹的理想状态的回退。

本篇对于 Git 的一些基本概念和使用就不介绍了,不会的关注公众号Java技术栈在后台回复 git 进行阅读。

1、未提交

未提交有以下两种情况:

1)已经在工作区修改了文件,但还未执行 git add 提交到暂存区。

2)已经执行了 git add 提交到暂存作,但还未执行 git commit 提交本地仓库。

这时候回退:

git reset --hard

这样等于清空了暂存区和工作区,本地仓库回退到了最新的提交状态。

2、已提交未推送

这种情况是指已经执行了 git add 提交到暂存区操作,又执行了 git commit 提交本地仓库,但还未 git push 推送到远程仓库。

2.1 上个版本回退:

git reset --hard HEAD^

2.2 多个版本回退:

git reset --hard HEAD~N

N:代表数字,要回退的次数。

2.3 指定版本回退:

git reset --hard <commit_id>

2.4 直接回退到远程最新版本:

git reset --hard origin/master

3、已推送

这种情况是指已经执行了 git add 提交到暂存区操作,又执行了 git commit 提交本地仓库,还执行 git push 推送到远程仓库。

参考上面的 2.1~2.4 的方法,先强制回退到本地仓库到上 N 个版本,再进行强制推送到远程仓库。

回退到上个版本示例:

git reset --hard HEAD^
git push -f

总结

第一种情况一般在工具上很容易操作,比如在 Sourcetree:

但 2、3 种情况在工具上面就没法办法操作了,至少在 Sourcetree 上是不行,需要在命令行进行回退,如果大家有知道的也可以分享下。

以上总结了一些栈长平时常用的 Git 回退方法,当然还有一些其他回退方式,以上也已经够用了,希望对大家有帮助。

后面我还会分享一些我平时用到的修改历史记录的实战干货,比如怎么修改历史提交信息、合并多次提交等,关注公众号Java技术栈第一时间推送。

如果有学到,三连支持下哦~

好了,今天的分享就到这里了,后面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送,我也将主流 Git 面试题和参考答案都整理好了,在公众号后台回复关键字 \"面试\" 进行刷题。

版权声明: 本文系公众号 \"Java技术栈\" 原创,转载、引用本文内容请注明出处,抄袭、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权利。

近期热文推荐:

1.1,000+ 道 Java面试题及答案整理(2022最新版)

2.劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!


来源:https://www.cnblogs.com/javastack/p/16159784.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 工作 3 年的同事不知道如何回滚代码,我真是醉了。。

相关推荐

  • 暂无文章