【看日记学Git】之十

本次将重点关注历史记录查询。

1

git的历史记录是由一些列相关联的”commit”所组成的。每一次“commit”都会有一个唯一的名称。如下黑体字所示:

 

[rocrocket@wupengchong project]$ git log
commit 5b888402aadd3cd41b3fe8c84a8658da07893b20
Author: rocrocket <wupengchong@gmail.com>
Date:   Wed Sep 24 13:16:46 2008 +0800
after pull from rocrocket
Hello!!!!!

2

我们可以使用git show再加上述的commit名称来显式更详细的commit信息:

[rocrocket@wupengchong project]$ git show 5b888402aadd3cd41b3fe8c84a8658da07893b20

你完全可以用一个最短的且唯一的“名称前几个字符”来只待某次commit:

[rocrocket@wupengchong project]$ git show 5b888 //只要能区别与其他名称就足够了

使用git show加分支名称,亦可以显示分支信息:

[rocrocket@wupengchong project]$git show master
[rocrocket@wupengchong project]$git show experimental

使用HEAD字段可以代表当前分支的头(也就是最近一次commit):

[rocrocket@wupengchong project]$git show HEAD

每一次commit都会有”parent commit”,可以使用^表示parent:

[rocrocket@wupengchong project]$git show HEAD^ //查看HEAD的父母的信息
[rocrocket@wupengchong project]$git show HEAD^^ //查看HEAD的父母的父母的信息
[rocrocket@wupengchong project]$git show HEAD~4 //查看HEAD上溯4代的信息

要注意的是git-merge是会产生双父母的,这种情况这样处理:

[rocrocket@wupengchong project]$git show HEAD^1 //查看HEAD的第一个父母
[rocrocket@wupengchong project]$git show HEAD^2 //查看HEAD的第二个父母

3

你可以给复杂名称起个别名:

[rocrocket@wupengchong project]$ git tag V3 5b888 //以后可以用V3来代替复杂的名称(5b888…)
[rocrocket@wupengchong project]$ git show V3
[rocrocket@wupengchong project]$ git branch stable V3 //建立一个基于V3的分支

4

可以用git grep帮助我们搜索:

[rocrocket@wupengchong project]$ git grep “print” V3 //在V3中搜索所有的包含print的行
[rocrocket@wupengchong project]$ git grep “print” //在所有的历史记录中搜索包含print的行

5

定位具体的历史记录

[rocrocket@wupengchong project]$ git log V3..V7 //显示V3之后直至V7的所有历史记录
[rocrocket@wupengchong project]$ git log V3.. //显示所有V3之后的历史记录。注意<since>..<until>中任何一个被省略都将被默认设置为HEAD。所以如果使用..<until>的话,git log在大部分情况下会输出空的。
[rocrocket@wupengchong project]$ git log –since=”2 weeks ago” //显示2周前到现在的所有历史记录。具体语法可查询git-ref-parse命令的帮助文件。
[rocrocket@wupengchong project]$ git log stable..experimental //将显示在experimental分支但不在stable分支的历史记录
[rocrocket@wupengchong project]$ git log experimental..stable //将显示在stable分支但不在experimental分支的历史记录

6

你最喜欢的gitk也可以定位具体的历史记录:

[rocrocket@wupengchong project]$ gitk –since=”2 weeks ago” drivers/ //将在GUI中显示自2周前到现在为止的且位于drivers目录下的分支记录信息

===

到目前为止,我们针对最基本的git的操作已经学习完毕了。经过了这么多天的“看日记”,想必大家对这种学习形式有自己的认识和评价,希望大家写在下面的留言区,我会不断改进,为大家奉献更好的专题系列。:)

转载请注明:Git中国 » 【看日记学Git】之十

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值