共计 1341 个字符,预计需要花费 4 分钟才能阅读完成。
公司一个工作了 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 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!