在前面的文章中,咱们学习了如何建立仓库。如今咱们将学习如何查看仓库的历史记录,之因此没有先讲解如何向仓库如何提交commit,是由于我以为,只有先了解历史记录中包含哪些信息后,咱们才能更好的建立良好的提交。有了良好的提交,才会有助于之后咱们对项目的总体回顾。在本文章中,咱们将介绍 git log
和 git show
两个指令,这里先简单介绍一下这两个命令的功能。java
固然使用 git log
命令,咱们首先须要一个现有的Git仓库,这里仍是以我本身的项目SimpleEyes项目为例。git
还记得咱们以前的介绍的 git clone
命令吗?咱们先 clone 该项目吧.github
git clone https://github.com/AndyJennifer/SimpleEyes
复制代码
克隆该项目后,咱们经过 cd 命令进入该项目,使用 git log
命令,咱们能获得下列输出:算法
默认状况下,使用 git log
命令会显示仓库中每一个 commit 的详细提交信息。结合上图,咱们来分析下每行所表明的具体内容。这里以第一个历史提交记录为例:安全
commit 543019ea4bca77c31ccd1d06c4ca2ca4b1d69b23 (HEAD -> master, origin/master, origin/HEAD)
复制代码
在Git中会为每一个提交生成一个ID,也就是SHA
。在本行中不只显示了提交的ID,当前所指向的分支为 master
,固然如今咱们可能还不了解分支的相关信息,不过请你们放心,咱们会在后续的文章中学到它的。bash
SHA
是一个长 40 个字符的字符串(由 0–9 和 a–f 组成),并根据 Git 中的文件或目录结构的内容计算得出。SHA 的全称是"Secure Hash Algorithm"(安全哈希算法)。若是你想了解哈希算法,能够参考SHA家族。app
Author: AndyJennifer <1225868370@qq.com>
复制代码
当前行显示了提交这个commit的做者以及对应邮件信息。现阶段这个仓库只有我一我的维护,因此这里全是个人相关信息。固然,若是你的仓库是多人协做开发,那么不一样的做者提交的commit所对应的Author也会不一样啦。less
Date: Thu Aug 29 23:43:07 2019 +0800
复制代码
日期,很简单,就是现实当前 commit 的时间,通常状况下,咱们是不会关心它的。ide
修改了切换视频时,controller没有设置,致使的空指针异常
复制代码
通常状况下,咱们须要为每次提交的内容进行说明,好比增长了什么功能,修改了什么bug等等。一个良好的commit 提交内容与提交消息之间应该有着一一对应的关系,而不是表述模糊,张冠李戴。学习
若是你是第一次使用git log
命令,可能会有一个疑问,如何加载更多的历史记录呢?如何退出呢?若是你们仔细观察,在咱们的界面中末尾有个冒号:
,该冒号代表还能够显示更多的输出行。在Git中是使用 Less
程序做为其分页器,若是你不熟悉 less 或分页器也没有问题。你们只要知道该分页器是用于翻页并浏览内容的就好了。下面咱们看看该分页器对应的按键指令。
要向下滚动:
j
或 ↓
一次向下移动一行d
按照一半的屏幕幅面移动f
按照整个屏幕幅面移动要向上滚动:
k
或 ↑
一次向上移动一行u
按照一半的屏幕幅面移动b
按照整个屏幕幅面移动须要注意的是,当冒号变为单词END时,表示记录显示完毕,那么咱们能够按下 q
能够离开分页器。
使用 git log
命令,会显示日期、做者、commit消息等信息,可是有些状况下,咱们可能并不关心日期、或相关做者。咱们只想快速的浏览具体的提交信息,那么咱们能够为当前的 git log
命令,增长一个选项 --oneline
。
注意这里是
oneline
而不是online
。
使用 git log --oneline
咱们能获得以下输出:
使用 git log --oneline
命令会:
在了解了 git log --oneline
命令后,咱们可能会想深刻了解某个commit更改了哪一个或哪些文件。这个时候咱们须要 git log
的另外一个选项 --stat
。
stat 是单词
statistics
,为统计的意思。
使用 git log --stat
命令,咱们能获得以下输出:
这里为了方便讲解,我只截取了特征明显的commit
上图中最后一行,代表此次提交共涉及到8
个文件的修改,160
行的插入,5
行的删除。其中build.gradle文件中删除了1行,UserPreferences.kt中添加或删除了2行......相信到这里你们就明白了,使用命令git log --stat
会:
在上文中,我么已经经过添加 --stat
选项,能够知道修改了哪些文件,以及添加/删除了多少行代码。若是能查看文件中到底进行了哪些更改,是否是更好呢?在 git log
命令中具备一个可用来显示对文件做出实际更改的选项,就是 --patch
,能够简写为 -p
。
例如,咱们想查看下图中具体的修改:
咱们使用 git log -p
命令,咱们可以获得一下输出:
在上述输出信息中,包含5个比较重要的信息:
diff
显示了原始版本与新版本间的差别,咱们如今看到的IjkVideoView.java
文件,其中a
/app/../IjkVideoView.java为该文件的第一个版本,b
/app/../IjkVideoView.java为新版本。SHA
是不一样的。-
表示旧版本, +
表示新版本。-333,8
表示原始版本(用 -
表示),从338行开始,显示了8行。+333,10
表示新版本(用 +
表示),从338行开始,如今变成了10行,这10行在命令窗口中显示了。-
)开头的行是位于文件原始版本中,可是被 commit 删除的行+
)开头的行是 commit 新加的行上文中涉及到的命令,是对所有的历史记录进行浏览,若是说可以单独的显示某个提交信息是否是很棒呢?在Git中有两种方式来查看特定的提交。
这里咱们先 git log 方式,而后再学习 git show。
在上文中,咱们已经学会如何使用如下命令输出信息:
可是你是否知道,能够向全部这些命令提供 commit 的 SHA 做为最后一个参数?例如:
git log 543019ea
复制代码
在Git中支持完整的
SHA
与SHA前七个字符
做为具体的查询条件。
须要注意的是使用git log
+ SHA
的这种方式,并不会单独的显示某个提交。而是命令行将从这条提交开始输出历史记录,你仍然能够经过Git提供的分页器,查看该条提交信息以后的记录。
使用 git show + SHA
的方式,能够显示特定的提交信息。如
git show 543019ea
复制代码
git show
默认状况下会显示:
这里就再也不暂时示例图片了,但愿你们多多练习,并查看最终效果吧。
最后仍是回到咱们熟悉的图形化界面的使用流程中。咱们来看看IDEA为咱们提供了哪些便利吧。
经过依次点击编译器底部的Version Control
->Log
,咱们能获得以下界面:
如今分别上图标注的内容进行介绍:
站在巨人的肩膀上,才能看的更远~