软件版本:

  
操作系统:ubuntu10.04

   
内核版本:Linux version 2.6.32-36-generic
   
git 版本:git version 1.7.0.4

1. 查看提交历史

命令:git
log

2. 选项 --pretty[=<format>]
1)介绍
   
除了默认格式查看提交历史以外,还可以通过
--pretty[=<format>] 或者
--format[=<format>]
制定输出格式。<format> 可以是 noeline, short,
medium, full, fuller, email, raw, format: 中的一个,他们各自的输出格式可以参考 git
log --help 或者(3)。接下来我们主要是讨论 format: 的使用方法。

2)定制提交格式 --pretty=format:
   
--pretty=format:"format" 的用法就想 printf 的用法一样,只是换行从 \n 变为 %n
。下面列出一些常用的占位符,分别来自于(1)(2),更详细请参考(3)或者 git
log --help。

选项       说明

%H   提交对象(commit)的完整哈希字串

%h   提交对象的简短哈希字串

%T   树对象(tree)的完整哈希字串

%t   树对象的简短哈希字串

%P   父对象(parent)的完整哈希字串

%p   父对象的简短哈希字串

%an  作者(author)的名字

%_ae  作者的电子邮件地址
(由于新浪博客显示问题,请去除
%_ae 中的 _ )
%_ad  作者修订日期(可以用 -date= 选项定制格式)(由于新浪博客显示问题,请去除 % ad 中的 _ )
%ar  作者修订日期,按多久以前的方式显示

%cn  提交者(committer)的名字

%_ce 提交者的电子邮件地址
(由于新浪博客显示问题,请去除 %_ce 中的 _ )
%_cd  提交日期
(由于新浪博客显示问题,请去除 %_cd 中的 _ )
%cr  提交日期,按多久以前的方式显示

%d:  ref名称
%s:  提交的信息标题
%b:  提交的信息内容
%Cred: 切换到红色

%Cgreen: 切换到绿色

%_Cblue: 切换到蓝色
(由于新浪博客显示问题,请去除 %_Cblue 中的 _)
%Creset: 重设颜色

%C(...): 制定颜色, as described in color.branch.* config option

%n:  换行     注意:作者(author)_和_提交者(committer)_之间究竟有何差别,其实作者指的是实际作出修改的人,提交者指的是最后将此工作成果提交到仓库的人。所以,当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时,你就是作者,而那个核心成员就是提交者。引用来自(1)

    例如,我们只需要输出完成的哈希值以及提交的信息标题,就可以使用命令: $git log --pretty=format:"%H %n %s" 38896a27dc8ab4f47883bd67d300f6145f0478b7
 commit write 2
7d3e94cf22b17f7d097479ae8d9367e42509bb3f
 Initial commit 3)定制专属于你的 log 格式

    根据上面的说明,我们可以定制属于自己 log 格式: $git config --global alias.lg "log --graph --pretty=format:'%Cred%H%Creset @%C(yellow)%d%Creset %n Author: %cn <%_ce> %n Date: %_cd %_Cblue(%cr)%Creset %n %n Commit subject: %Cgreen%s%Creset %n'"
    注:命令中 %_ce、%_cd、%_Cblue 分别去除其下划线 _ 。
$git lg * 38896a27dc8ab4f47883bd67d300f6145f0478b7 @ (HEAD, master)
|  Author: Eddy <xxx@xxx.com>
|  Date: Thu Feb 2 17:06:06 2012 +0800 (8 days ago)

|  Commit subject: commit write 2

* 7d3e94cf22b17f7d097479ae8d9367e42509bb3f @
   Author: Eddy <xxx@xxx.com>
   Date: Thu Feb 2 17:05:00 2012 +0800 (8 days ago)
  
   Commit subject: Initial commit 4)其它选项
    git log 支持的选项有很多,详细请参考 git log --help ,常用的有(引用(1)中的表2-2): 选项   说明

-p     按补丁格式显示每个更新之间的差异。

--stat 显示每次更新的文件修改统计信息。

--shortstat 只显示 --stat 中最后的行数修改添加移除统计。

--name-only 仅在提交信息后显示已修改的文件清单。

--name-status 显示新增、修改、删除的文件清单。

--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。

--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。

--graph 显示 ASCII 图形表示的分支合并历史。

--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
参考资料:
(1) http://progit.org/book/zh/ch2-3.html
(2) http://ruby-china.org/topics/939
(3) http://linux.die.net/man/1/git-show

git-定制属于你的log格式的更多相关文章

  1. goaccess iis w3c 自定义log 格式参考

    goaccess 支持强大的自定义log 格式,比如我们需要分析iis w3c 格式日志 参考iis w3c 字段 date time s-ip cs-method cs-uri-stem cs-ur ...

  2. git 查看对比的方法log diff

    git shortlog 默认情况下,git shortlog 把输出按作者名字排序,但你可以传入 -n 选项来按每个作者提交数量排序. 1.有冲突时可以用 git status查看 2.通过git ...

  3. Linux编程之定制带级别的log

    我的开发组长曾经说过这么一段话"一个优秀的程序员不在于他写代码有多快,也不在于他能不能实现这个模块的功能,要实现业务实现功能谁不会啊,重要的是他的解决能力,也就说当程序出现错误时你能不能够快 ...

  4. Git删除commit提交的log记录

    基于 GitFlow 工作流,可能某个提交(commit)导致了 bug,或者有多个提交需要返工,此时你就会用到删除提交. 接下来的内容都基于下面这张 git log 提交记录图来写.   git l ...

  5. leveldb - log格式

    log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据.因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及D ...

  6. 多个git合并,并保留log历史记录

    面临的需求是:将多个git仓库作为一个单独目录,整合到一个新的git仓库中:并且保留历史记录. 1. 新建一个summary仓库 新建一个summary仓库,用于整合一系列git仓库. git clo ...

  7. nginx - 反向代理 - 配置文件 header - 日志log格式

    server { listen ; server_name paas.service.consul; client_max_body_size 512m; access_log /data/bkdat ...

  8. git log命令全解析,打log还能这么随心所欲!

    git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! ...

  9. 个性化你的Git Log的输出格式

    git已经变成了很多程序员日常工具之一. git log是查看git历史的好工具,不过默认的格式并不是特别的直观. 很多时候想要更简便的输出更多或者更少的信息,这里列出几个git log的format ...

随机推荐

  1. Contest 3

    A:非常裸的dp. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstrin ...

  2. C++解析(3):布尔类型与三目运算符

    0.目录 1.布尔类型 2.三目运算符 3.小结 1.布尔类型 C++中的布尔类型: C++在C语言的基本类型系统之上增加了bool C++中的bool可取的值只有true和false 理论上bool ...

  3. KinFu --- KinectFusion的开源实现

    KinectFusion是微软研究院的一个项目,研究用Kinect来实时地重构3D表面,最终用于人机交互. 先看视频:http://research.microsoft.com/en-us/proje ...

  4. Red Hat下升级python的问题

    分为两部分: 一,升级Python 安装的包的渠道(传送门),安装过程的渠道(传送门). 二.涉及的问题 1.yum不能使用 解决办法(传送门),其中的部分就行.

  5. 最长上升子序列nlogn算法

    LIS问题是经典的动态规划问题,它的状态转移相信大家都很熟悉: f[i] = f[k] + 1  (k < i 且 A[k] < A[i]) 显然这样做复杂度是O(n^2) 有没有更快的算 ...

  6. NOIP 2012 洛谷P1081 开车旅行

    Description: 就是两个人开车,只能向东开.向东有n个城市,城市之间的距离为他们的高度差.A,B轮流开车,A喜欢到次近的城市,B喜欢到最近的城市.如果车子开到底了或者车子开的路程已经超过了限 ...

  7. 【BZOJ 4449】[Neerc2015]Distance on Triangulation 多边形分治结构

    这题好神啊……正解方向是分治,据我所知的分治方法有:I.离线后直接对多边形以及所有的询问进行分治 II.建立多边形的分治结构(对于三角形来说类似线段树,对于对角线来说类似平衡树),然后每次在这个分治结 ...

  8. Linux基础--------centos7 安装python3(yum安装)

    #安装sqlite-devel yum -y install sqlite-devel #安装依赖 yum -y install make zlib zlib-devel gcc-c++ libtoo ...

  9. hashlib模块--加密

    用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import hashlib m = ha ...

  10. svn常见错误

    1.svn提交报错:svn: Aborting commit:XXXXXremains in conflict 解决:说明Svn服务器上的对应内容,在你上次Update后已被别人修改了,而你也做了修改 ...