Git详解——git log

Posted ys951207

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git详解——git log相关的知识,希望对你有一定的参考价值。

如果我们想要看看我都改了

git log 可以查看历史记录:

git log

 

技术分享图片

 

事实上,如果你希望看到更多细节,比如你想看看每条 commit 具体都有那些改动,也是可以的。

 

log -p 查看详细历史

-p--patch 的缩写,通过 -p 参数,你可以看到具体每个 commit 的改动细节:

git log -p

 

技术分享图片

 

log -p 可以看到每一个 commit 的每一行改动,所以很适合用于代码 review。

 

log --stat 查看简要统计

如果你只想大致看一下改动内容,但并不想深入每一行的细节(例如你想回顾一下自己是在哪个 commit 中修改了 games.txt 文件),那么可以把选项换成 --stat

git log --stat

 

技术分享图片

 

show 查看具体的 commit

如果你想看某个具体的 commit 的改动内容,可以用 show

 

看当前 commit

直接输入:

git show

 

技术分享图片

 

看任意一个 commit

show 后面加上这个 commit 的引用( branchHEAD 标记)或它的 SHA-1 码:

git show 5e68b0d8

技术分享图片

 

看指定 commit 中的指定文件

commit 的引用或 SHA-1 后输入文件名:

git show 5e68b0d8 shopping list.txt

 

看未提交的内容

如果你想看未提交的内容,可以用 diff

 

比对暂存区和上一条提交

使用 git diff --staged 可以显示暂存区和上一条提交之间的不同。换句话说,这条指令可以让你看到「如果你立即输入 git commit ,你将会提交什么」:

git diff --staged

 

--staged 有一个等价的选项叫做 --cached 。这里所谓的「等价」,是真真正正的等价,它们的意 思完全相同。

 

比对工作目录和暂存区

使用 git diff (不加选项参数)可以显示工作目录和暂存区之间的不同。换句话说,这条指令可以让你看到「如果你现在把所有文件都 add ,你会向暂存区中增加哪些内容」:

git diff

 

比对工作目录和上一条提交

使用 git diff HEAD 可以显示工作目录和上一条提交之间的不同,它是上面这二者的内容相加。换句话说,这条指令可以让你看到「如果你现在把所有文件都 add 然后 git commit ,你将会提交什么」(不过需要注意,没有被 Git 记录在案的文件(即从来没有被 add 过 的文件,untracked files 并不会显示出来。为什么?因为对 Git 来说它并不存在啊)。

git diff HEAD

 

实质上,如果你把 HEAD 换成别的 commit ,也可以显示当前工作目录和这条 commit 的区别。不过这种「如果」是可以列举很多很多的,Git 非常灵活,假如我把每个命令的所有可能性都列举出来, 这本小册会变得杂乱无比没有重点,反而会让你困惑。所以我只讲最常用和最通用的内容,如果你对这些「如果」感兴趣,最好是自己去探索。

 

小结

这一节介绍了一些查看改动内容的方法,大致有这么几类:

1、查看历史中的多个 commitlog 

  1. 查看详细改动: git log -p
  2. 查看大致改动: git log --stat

 

2、查看具体某个 commitshow

  1. 要看最新 commit ,直接输入 git show ;要看指定 commit ,输入 git show commit 的引用或SHA-1
  2. 如果还要指定文件,在 git show 的最后加上文件名

 

3、查看未提交的内容: diff

  1. 查看暂存区和上一条 commit 的区别: git diff --staged (或 --cached )
  2. 查看工作目录和暂存区的区别: git diff 不加选项参数
  3. 查看工作目录和上一条 commit 的区别: git diff HEAD

 

以上是关于Git详解——git log的主要内容,如果未能解决你的问题,请参考以下文章

git 使用详解—— get log 查看提交历史

git 使用详解-- get log 查看提交历史

VSCode自定义代码片段——git命令操作一个完整流程

git log --author详解,这个是个模糊匹配

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程