每天学点Git -- 笔记(二)

  上一篇帖子,主要进行了Git库文件的修改,并进行了添加、提交等操作,在进入主题之前,我们对readme.txt文件再次进行修改,代码:

Git is a distributed version control system.
Git is free software distributed under the GPL.

  对修改后的文件add并commit,代码:

$ git add readme.txt
$ git commit -m "append GPL"
[master 3628164] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)

  至此,我们一共提交了三个版本的readme文件到Git仓库中,那么我们如何查看到底提交了哪些内容,有哪些改变呢?

  Git提供了git log 命令帮助我们进行观察,代码:

$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <[email protected]>
Date:   Tue Aug 20 15:11:49 2013 +0800

    append GPL

commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <[email protected]>
Date:   Tue Aug 20 14:53:12 2013 +0800

    add distributed

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <[email protected]>
Date:   Mon Aug 19 17:51:55 2013 +0800

    wrote a readme file

  git log命令显示从最近到最远的提交日志。

  这里我们执行git log --pretty=oneline试试

$ git log --pretty=oneline
3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file

  我们发现,显示结果简化了许多。

  这里的绿色的一大串字符是什么东西? == commit id. 也就是版本号!版本号每个人都不一样的!

  那么现在我们如果要回退到上一个版本去,怎么办?

  首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

  现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令: 

$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed

  我们可以通过Linux中的 cat 指令查看是否回退到了上一个版本:

$ cat readme.txt
Git is a distributed version control system.
Git is free software.

  此时,我们通过 git log 查看版本库的状态:

$ git log
commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <[email protected]>
Date:   Tue Aug 20 14:53:12 2013 +0800

    add distributed

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <[email protected]>
Date:   Mon Aug 19 17:51:55 2013 +0800

    wrote a readme file

  最新的版本不见了,此时,我们可以通过指定版本号的方式回到之前的版本:

$ git reset --hard 3628164
HEAD is now at 3628164 append GPL

  版本号不需要写全,但是最少写满4位,不然容易报错,找不到文件。

  这个时候cat一下,查看是否回到了最新的版本:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.

  Git回退的速度是很快的,其原理就是在Git中,有一个指向当前版本的指针HEAD,当回退到哪一个版本,则指针指向哪一个版本号,即定位在哪里。

  注:如果,我们找不到commit id了,怎么办?

  Git提供了一个命令git reflog用来记录你的每一次命令:

$ git reflog
ea34578 [email protected]{0}: reset: moving to HEAD^
3628164 [email protected]{1}: commit: append GPL
ea34578 [email protected]{2}: commit: add distributed
cb926e7 [email protected]{3}: commit (initial): wrote a readme file

  ok,这样,我们就找到了相关的版本的id号。

  

时间: 2024-08-08 12:07:09

每天学点Git -- 笔记(二)的相关文章

每天学点Git -- 笔记(四)

现在,我们考虑一种情况,当你修改了文件,但是此时你想撤销它,怎么办?下面,我们用代码试验一下: (1)在readme.txt中添加新的一行: $ cat readme.txt Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage. Git tracks changes of files. My

每天学点Git -- 笔记(三)

本帖,我们一起来看看分布式版本控制系统Git与集中式版本控制系统SVN等系统的不同之处:暂存区 (本帖原版来自廖雪峰老师的博客,这里只是进行了稍微修改与整理,因为廖雪峰老师写的很详细,也很实在,这里不能步说一下.原版内容大家可以参考本系列贴的第一贴.) 首先,我们一起分析几个专有名词: 1.工作区(Working Directory) 就是你在电脑里能看到的目录,比如maxingit文件夹就是一个工作区: 2.版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Gi

每天学点Git -- 笔记(一)

如果你作为一名Android开发者,不懂Git?那我们就一起学习,请各位亲共勉!(参考廖雪峰老师的博文,受益匪浅!!!) 网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 1.Git? 何为Git?它是如何诞生的?如何安装?请大家参考廖雪峰老师的博文,简单幽默,就像在读小说. 我只能告诉你:Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说

21天学通Python笔记(二)

五. >>> def hello(): print('123123') >>> hello() 123123 >>> def hello1(v): print(v) return v >>> a = hello1(123) 123 >>> a 123 >>> def hello2(v1, v2): print(v1) return v2 >>> b = hello2(1, 3) 1

Emacs 笔记二

Emacs 笔记二 Table of Contents 1. 前言 2. emacs基本操作(常用快捷键) 3. emacs模式讲解 4. emacs缓冲区 5. org mode 5.1. 列表 5.2. 快键键 5.3. 内嵌元素(插入代码什么的) 5.4. 表格 1 前言 最近在学着写博客,发现MarkDown真乃神器,于是去找了很多markdown的工具,发现作业部落 最好的那个,而无意间又发现了org-mode火爆到极致 非常被人推崇,其实作业部落 已经是能很完美的满足我的需求了,但是

小猪的数据结构学习笔记(二)

小猪的数据结构学习笔记(二) 线性表中的顺序表 本节引言: 在上个章节中,我们对数据结构与算法的相关概念进行了了解,知道数据结构的 逻辑结构与物理结构的区别,算法的特性以及设计要求;还学了如何去衡量一个算法 的好坏,以及时间复杂度的计算!在本节中我们将接触第一个数据结构--线性表; 而线性表有两种表现形式,分别是顺序表和链表;学好这一章很重要,是学习后面的基石; 这一节我们会重点学习下顺序表,在这里给大家一个忠告,学编程切忌眼高手低,看懂不代表自己 写得出来,给出的实现代码,自己要理解思路,自己

《R实战》读书笔记二

第一章 R简介 本章概要 1安装R 2理解R语言 3运行R程序 本章所介绍的内容概括如下. 一个典型的数据分析步骤如图1所示. 图1:典型数据分析步骤 简而言之,现今的数据分析要求我们从多种数据源中获取数据.数据合并.标注.清洗和分析,并且把分析的结果进行展示,形成报告或者系统,辅助决策.R能够满足现今数据分析的要求. 为什么用R? R是一个适合统计分析和绘图的环境与语言.它是开源.免费的,获得世界范围社区支持.统计分析和绘图工具已经很多了,例如:SPSS,SAS,Excel,Stata和Min

《学会提问》读书笔记二

<学会提问>读书笔记二 因为书中的小点知识和思考太多,我从这篇笔记开始就只记我害怕会遗忘的知识,思考过程就不提及了. 弱势批判性思维和强势批判性思维 弱势批判性思维的目的是用批判性思维来反驳.抵制那些和你意见不同的论述最终就是为了看到那些与你主张不一致的人服服帖帖的甘心认输,但是这样就意味着,你对于是否接近真理和发扬美德漠不关心,实际上也摧毁了批判性思维潜在的人性的一面和不断发展进步的特征.而且我认为,弱势批判性思维的出发点是自私的,他们盲目地认为自己的观点就是正确的,用批判性思维来批判其他人

git笔记之多账户的使用

一:加载wifi驱动模块 在hardware/libhardware_legacy/wifi/wifi.c调用函数 insmod(DRIVER_MODULE_PATH, DRIVER_MODULE_ARG) 其中 DRIVER_MODULE_PATH = /system/lib/dhd.ko DRIVER_MODULE_ARG  = "firmware_path=/etc/wifi/40181/fw_bcm40181a2.bin nvram_path=/etc/wifi/40181/nvram.