关闭

Git中的各种后悔药

标签: git
1426人阅读 评论(0) 收藏 举报
分类:

Git强大的撤销、版本回退功能,让我们在开发的过程中能够随意的回到任何一个时间点的状态,本文我们就来看看Git中的各种后悔药!

本文是Git系列的第三篇,了解前面的文章有助于更好的理解本文:


1.Git概述
2.Git基本操作


本文将从如下三个方面介绍Git中的后悔药:

1.工作区的代码想撤销
2.add到暂存区的代码想撤销
3.提交到本地仓库的代码想撤销

提交到远程仓库的后悔药我们统一都在关联远程仓库一文中讲解,敬请期待。

工作区的代码想撤销

可能有一天我正在写代码,写了很久发现写错了,想恢复到一开始的状态,一个笨办法就是把刚刚写的代码一行一行的删除,不过这种方式成本太高,我们可以通过git checkout -- <file>命令来撤销工作区的代码修改。如下图:

这里写图片描述

首先我们执行了git status命令,发现工作区是干净的,然后执行了cat命令,发现文件只有两行内容,然后通过vi编辑器向文件中添加一行,保存并退出,退出来之后又执行了git status命令,此时工作区的状态已经发生变化,然后我们执行了git checkout – git01.txt命令,表示撤销之前的操作,让git01.txt恢复到之前的状态,该命令执行成功之后,我们再执行cat命令发现文件内容已经恢复了,此时再执行git status,状态也恢复了。

add到暂存区的代码想撤销

如果想要撤销,但是代码已经提交到暂存区了,不用担心,也能撤销,分两个步骤:

1.将暂存区的代码撤销到工作区
2.将工作区的代码撤销(具体操作和’工作区的代码想撤销’一致)

将暂存区的代码撤销,我们可以使用git reset HEAD命令来实现。如下图:

这里写图片描述

这里的代码都比较简单,核心的过程就是先执行git reset HEAD命令,从暂存区撤销,剩下的操作参考’工作区的代码想撤销’一节。

提交到本地仓库的代码想撤销

同样的,提交到本地仓库的代码一样也可以撤销,我们可以利用git reset --hard <版本号>命令来实现版本回退,该命令中的版本号有几种不同的写法:

1.可以使用HEAD^来描述版本,一个^表示前一个版本,两个^^表示前两个版本,以此类推。
2.也可以使用数字来代替^,比如说前100个版本可以写作HEAD~100。
3.也可以直接写版本号,表示跳转到某一个版本处。我们每次提交成功后,都会生成一个哈希码作为版本号,所以这里我们也可以直接填版本号,哈希码很长,但是我们不用全部输入,只需要输入前面几个字符即可,就能识别出来。

看下面一系列的操作:
1.通过git log查看当前提交日志:

这里写图片描述

2.通过git reset HEAD^^向前回退两个版本:

这里写图片描述

3.查看日志,发现最后一次提交的版本号是695ce1fe,利用git reset –hard 695ce1fe命令回到回退之前的状态:

这里写图片描述

4.通过git reset –hard HEAD~1回到上一个版本:

这里写图片描述

好了,Git中的后悔药我们就先介绍到这里,有问题欢迎留言讨论。

参考资料:

1.《GitHub入门与实践》
2.《Pro Git》

更多JavaEE和Git资料请关注公众号:

这里写图片描述

3
1
查看评论

git常见后悔药

git常见后悔药 撤销本地全部没有git add过的修改  git checkout -- . 使用库上文件覆盖本地修改(当然是指用本地库覆盖)git checkout file_name 回退掉某一次commit,回退方式是自动生成一个反向的commi...
  • abcd1f2
  • abcd1f2
  • 2016-12-29 19:17
  • 358

git的笔记(各种类型的后悔药:撤销你的修改)

之前说过当你已经提交了你的修改,提交到了版本库里,想要回到之前的版本,可以使用git reset HEAD^ git reset HEAD^^ git reset 88eb //版本号你还可以使用git log或者git reflog来查看历史版本但是当你还未进行提交,仅仅是修改了工作区的文件或者已...
  • nber1994
  • nber1994
  • 2016-05-11 17:33
  • 505

Git自学之路(一)- 认识了解后悔之药Git

也许以前你不知道哪里有后悔药,但是当你遇见Git,你发现,想怎么反悔就怎么反悔,一言不合就撤退,对,就是这么任性。 在代码管理版本控制中,Git 是目前超级流行的工具。接下来就具体了解下 Git 的前世今生。 孙子曰:“知己知彼,百战不殆”。因此, 对 Git 越了解应用也就越好。
  • KjunChen
  • KjunChen
  • 2016-07-21 11:45
  • 3027

人生这三大后悔药,你最想吃那一颗?

这个世界有没有后悔药,其实,说没有可以,但是,说有,也可以,为什么呢?下面就和51养生网小编一起来看看。 后悔,其实是一种心理忏悔,是指对以前没有做的事情或做错了的事情感到难以释怀,心中总是惦记着,想着怎么自己当初没有去做,而不断地埋怨和懊恼。在我们的一生,总是有很多事情,会让我们感到后悔,让我们...
  • qq_36948778
  • qq_36948778
  • 2017-11-02 08:39
  • 313

git 使用详解(8)-- 分支HEAD

有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快。和许多其他版本控制系统不同,Git鼓励在工作流程中频繁使用分支与...
  • wh_19910525
  • wh_19910525
  • 2012-04-17 19:56
  • 22430

选 择 与 人 生

有一个故事说:有三个人要被关进监狱三年,监狱长满足他们三个每人一个要求。美国人爱抽雪茄,要了三箱雪茄。法国人最浪漫,要一个美丽的女子相伴。 而犹太人说,他要一部与外界沟通的电话。 三年过后,第一个冲出来的是美国人,嘴里鼻孔里塞满了雪茄,大喊道:“给我火,给我火!”原来他忘了要火了。 接着出来的是法国...
  • sunboy7890
  • sunboy7890
  • 2011-06-09 09:24
  • 476

Git后悔药之代码回退

1、撤销操作 一来就是一张大图,如果不太了解git的人会有点蒙,下面简单解释一下(都是我个人的理解,如果不妥还请指正),git仓库的初始化以及clone这些在这里就不讲了,请自行百度。 远程仓库:就是在github或者在gitlab上的代码。可以用git pull和git push来...
  • awj321000
  • awj321000
  • 2018-01-11 17:10
  • 14

Git 使用遇到的各种问题

1、执行 git push orgin master 提示error: src refspec master does not match any. error: failed to push some refs to 'http://localhost:8080/sample.git...
  • w_yunlong
  • w_yunlong
  • 2017-02-18 09:32
  • 468

Git最常用功能,这一篇就够了!(结合开发场景)

毫无疑问,Git是当下最流行、最好用的版本控制系统。Git属于分布式版本控制系统,相较于Subversion等集中式版本控制系统有很明显的优势。对于我们开发人员来说,熟练使用Git是最基本的技能之一。那么,今天就来说一下在开发工作中,使用到的Git的最基本、最常用的功能有那些?克隆版本库工作中,当接...
  • h247263402
  • h247263402
  • 2017-07-08 18:43
  • 901

学习Git需要清楚的几个术语以及常用的Git命令总结

给大家推荐一个github仓库,记录了一些常用的git命令,基本能满足日常工作的需要. https://github.com/521xueweihan/git-tips
  • u010689306
  • u010689306
  • 2017-07-16 08:14
  • 197
    更多JavaEE资料请关注公众号
    个人资料
    • 访问:1931546次
    • 积分:18948
    • 等级:
    • 排名:第566名
    • 原创:326篇
    • 转载:1篇
    • 译文:2篇
    • 评论:1010条
    博客专栏
    最新评论