参考

https://www.cnblogs.com/bellkosmos/p/5923439.html

https://www.cnblogs.com/mkl34367803/p/9219913.html

https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2

git log用于查询版本的历史,命令形式如下
 git log [<options>] [<since>..<until>] [[--] <path>...] 
 

挑选一些常用选项

不带参数

git log

如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者、提交日期、和提交说明

查询提交内容统计stat

git log --stat

显示每次提交的内容,仅显示简要的增改行数统计

格式化输出pretty

git log --pretty=[...]

使用其他格式显示历史提交信息,可选项有:

  • oneline
  • short
  • medium
  • full
  • fuller
  • email
  • raw
  • format:<string>,默认为medium,如:

 --pretty=oneline :一行显示,只显示哈希值和提交说明(--online本身也可以作为单独的属性)

 --pretty=format:"" :控制显示的记录格式,如:

  • %H  提交对象(commit)的完整哈希字串
  • %h  提交对象的简短哈希字串
  • %T  树对象(tree)的完整哈希字串
  • %t  树对象的简短哈希字串
  • %P  父对象(parent)的完整哈希字串
  • %p  父对象的简短哈希字串
  • %an 作者的名字(author name)
  • %ae 作者的电子邮件地址(author email)
  • %ad 作者修订日期(可以用 -date= 选项定制格式)
  • %ar 作者修订日期,按多久以前的方式显示
  • %cn 提交者(committer)的名字

    作者和提交者的区别不知道是啥?

    作者与提交者的关系:作者是程序的修改者,提交者是代码提交人(自己的修改不提交是怎么能让别人拉下来再提交的?)

    其实作者指的是实际作出修改的人,提交者指的是最后将此工作成果提交到仓库的人。所以,当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时,你就是作者,而那个核心成员    就是提交者(soga)

  • %ce 提交者的电子邮件地址
  • %cd 提交日期(可以用 -date= 选项定制格式)
  • %cr 提交日期,按多久以前的方式显示
  • %s  提交说明

带颜色的 --pretty=format:"" ,这个另外写出来分析

以这句为例:%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>

它的效果是:   

先断句:[%Cred%h][%Creset   -][%C(yellow)%d ][%Cblue%s][%Cgreen(%cd)][%C(bold blue)<%an>]

然后就是很明显能得到的规律了

一个颜色+一个内容

颜色以%C开头,后边接几种颜色,还可以设置字体,如果要设置字体的话,要一块加个括号

能设置的颜色值包括: reset (默认的灰色), normal ,  black ,  red ,  green ,  yellow ,  blue ,  magenta ,  cyan ,  white .

字体属性则有 bold ,  dim ,  ul ,  blink ,  reverse .

内容可以是占位元字符,也可以是直接显示的普通字符

  • 查询用户,邮件,commit message的且在指定日期内的带颜色的提交

控制输出日志条目n

git log -n [N]

显示前n条log

  • 查询最近的2条提交

根据时间查询after和before

git log --after="yyyy-mm-dd"

  • 查询2019-01-01到2019-03-06的所有提交

根据用户名查询author

git log --author=[...]

author使用用户名或者邮箱都可以,查询结果是一致的.

作者名不需要精确匹配,只需要包含就行了.

可以使用正则表达式.

  • 查询指定用户的所有提交

根据提交消息查询grep

git log --grep=[...]

过滤提交信息commit message记录

可以传入-i用来忽略大小写

注意:如果想同时使用--grep和--author,必须在附加一个--all-match参数

  • 查询commit message包含edp608的所有提交

按文件查询--

git log -- [path]

- -(空格)或[没有]

有时你可能只对某个文件的修改感兴趣, 你只想查看跟某个文件相关的历史信息, 你只需要插入你感兴趣文件的路径[对,是路径,所以经常是不太好用]就可以了

比如:git log -- foo.py bar.py ,只返回和foo.py或bar.py相关的commit

这里的--是告诉Git后面的参数是文件路径而不是branch的名字. 如果后面的文件路径不会和某个branch产生混淆, 你可以省略- -,比如git log foo.py

另外,后边的路径还支持正则,比如:git log  *install.md 是,指定项目路径下的所有以install.md结尾的文件的提交历史

另外,文件名应该放到参数的最后位置,通常在前面加上--并用空格隔开表示是文件

另外,git log file/ 查看file文件夹下所有文件的提交记录

  • 查询指定文件的所有提交记录

根据提交的文件内容查询-S/-G

git log -S"..."

git log -G"..."

有时你想搜索和新增或删除某行代码相关的commit. 可以使用这条命令

假设你想知道Hello, World!这句话是什么时候加入到项目里去的,可以用:git log -S"Hello,World!"

另外:如果你想使用正则表达式去匹配而不是字符串, 那么你可以使用-G代替-S.

这是一个非常有用的debug工具, 使用他你可以定位所有跟某行代码相关的commit. 甚至可以查看某行是什么时候被copy的, 什么时候移到另外一个文件中去的

注:-S后没有"=",与查询内容之间也没有空格符

  • 查询内容有指定字符串的提交

查询单次提交内容show

git show [commit hash] [filePath]

  • 查询在哈希值为2d38...提交下的所有修改内容

  • 查询pom文件在哈希值为2d38...提交下的修改情况

Git--git log的更多相关文章

  1. 从code review到Git commit log

    最近在读一本技术类的书:朱赟——<跃迁:从技术到管理的硅谷路径>,其中聊了很多很有趣的观点,比如:技术管理.技术实践.硅谷文化.个人成长等. 读到关于硅谷人如何做code review这一 ...

  2. 【转】获取Jenkins构建时Git Change Log

    原文:https://www.jianshu.com/p/513ab6915dbd 在基于Jenkins进行CI持续集成的工作,在构建后上传蒲公英时想将本次版本的git commit信息同步到蒲公英的 ...

  3. rm -rf .git/gc.log

    rm -rf .git/gc.log ➜ test git:(abc) gp Auto packing the repository in background for optimum perform ...

  4. [skill][git] git 常用操作记录

    傻瓜入门: step by step : https://try.github.io/levels/1/challenges/1 一本书: https://git-scm.com/book/en/v2 ...

  5. [Git] Git 使用记录

    1. 配置git客户端 1.1 安装git bash https://git-scm.com/downloads 1.2 设置ssh Key 查看是否有ssh key ls -al ~/.ssh 没有 ...

  6. Git: git tag 使用小结(给发布版本打标记,切换并修改某个历史版本)

    通常在软件发布的时候会打一个tag,用于标注这次发布的相关信息, 这样做的好处是,将来如果这个版本出现了问题,可以通过tag迅速定位到当前版本,进行错误修复. 1. 新建tag $ git tag v ...

  7. 8.3 Customizing Git - Git Hooks

    https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks https://github.com/git/git/blob/master/temp ...

  8. <Git>git学习

    1.安装 分布式版本控制:工作电脑保存完整的代码,中央服务器挂了也可以使用 集中式版本控制:中央服务器挂了就凉凉 sudo apt-get install git git安装 检测安装成功 git 2 ...

  9. 8.3 Customizing Git - Git Hooks 钩子 自动拉取 自动部署 提交工作流钩子,电子邮件工作流钩子和其他钩子

    https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks https://github.com/git/git/blob/master/temp ...

  10. error setting certificate verify locations: CAfile: E:/git/Git/mingw64/ssl/certs/ca-bundle.crt

    一.问题: 当git clone项目时报 error setting certificate verify locations: CAfile: E:/git/Git/mingw64/ssl/cert ...

随机推荐

  1. 新闻网大数据实时分析可视化系统项目——17、Spark2.X分布式弹性数据集

    1.三大弹性数据集介绍 1)概念 2)优缺点对比 2.Spark RDD概述与创建方式 1)概述 在集群背后,有一个非常重要的分布式数据架构,即弹性分布式数据集(resilientdistribute ...

  2. android中的简单animation(二)push up,push left,cross fade,hyperspace

    animation_2.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  3. 004、Java的多行注释

    代码如下: package TIANPAN; public class TestDemo { public static void main(String args[]) { /* * 我是多行注释 ...

  4. python Scipy积分运算大全(integrate模块——一重、二重及三重积分)

    python中Scipy模块求取积分的方法: SciPy下实现求函数的积分的函数的基本使用,积分,高等数学里有大量的讲述,基本意思就是求曲线下面积之和. 其中rn可认为是偏差,一般可以忽略不计,wi可 ...

  5. 应用于Oculus Quest的VR头显应用

    项目需要一个VR头显项目来展示算法成果,设备为Oculus Quest一体机,基于android平台(平台要切换为android),体验了下设备效果还行,但还是有点沙窗效应.记录一下开发流程. 先贴个 ...

  6. Java 布尔运算

    章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...

  7. 电脑必须用U盘引导盘才能进系统解决办法

    昨天为了装Ubuntu双系统把系统给装崩了,结果重装win7系统之后出现了以下问题,百度的结果有些杂乱,解决过程自己做一下记录. 问题一:安装程序结束后,出现“Windows安装程序无法将Window ...

  8. HihoCoder第六周:01背包问题

    01背包问题大二的时候就接触过了,几行关键代码自己也都看过很多遍了,但是很多代码一直都没能理解.所以今天拿表来好好地画一画,弄懂其中的动态规划究竟什么含义. 1038 : 01背包 时间限制:2000 ...

  9. netty权威指南学习笔记七——编解码技术之GoogleProtobuf

    首先我们来看一下protobuf的优点: 谷歌长期使用成熟度高: 跨语言支持多种语言如:C++,java,Python: 编码后消息更小,更利于存储传输: 编解码性能高: 支持不同协议版本的兼容性: ...

  10. 【Leetcode】交替打印FooBar

    [问题]我们提供一个类: class FooBar { public void foo() { ; i < n; i++) { print("foo"); } } publi ...