辛星浅析git blame的使用

git  blame可以显示该文件的修改、以及作者上次修改文件的内容。他不会告诉我们文件中被删除以及被替换的内容,要详细的知道,我们还需要配合git  diff的使用。

下面是我们在git中创建了一个aa文件,然后是三次commit提交,以及只属于工作目录的修改。

我们用git  blame来查看一下效果:

$git blame aa
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  1) The beginning is to learn git blame
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  2) the second to add some difference.
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  3) ok, let's go ,you can do it !
 aba91773 (xin          2013-06-02 17:58:26 +0800  4)
 aba91773 (xin          2013-06-02 17:58:26 +0800  5)
 aba91773 (xin          2013-06-02 17:58:26 +0800  6)
 aba91773 (xin          2013-06-02 17:58:26 +0800  7) After first commit ,I want to add some charater to test git blame
 9db59f5a (xin          2013-06-02 18:09:21 +0800  8)
 9db59f5a (xin          2013-06-02 18:09:21 +0800  9)
 9db59f5a (xin          2013-06-02 18:09:21 +0800 10)
 9db59f5a (xin          2013-06-02 18:09:21 +0800 11) This is the third commit ,for testing -b option
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 12)
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 13)
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 14) this is the change of work directory.

我们还可以使用--show-stats参数来显示其他的统计数据,如下:

$git blame --show-stats aa
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  1) The beginning is to learn git blame
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  2) the second to add some difference.
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  3) ok, let's go ,you can do it !
 aba91773 (xin          2013-06-02 17:58:26 +0800  4)
 aba91773 (xin          2013-06-02 17:58:26 +0800  5)
 aba91773 (xin          2013-06-02 17:58:26 +0800  6)
 aba91773 (xin          2013-06-02 17:58:26 +0800  7) After first commit ,I want to add some charater to test git blame
 9db59f5a (xin          2013-06-02 18:09:21 +0800  8)
 9db59f5a (xin          2013-06-02 18:09:21 +0800  9)
 9db59f5a (xin          2013-06-02 18:09:21 +0800 10)
 9db59f5a (xin          2013-06-02 18:09:21 +0800 11) This is the third commit ,for testing -b option
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 12)
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 13)
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 14) this is the change of work directory.
 num read blob: 6
 num get patch: 3
 num commits: 3

我们还可以使用-f或者--show-name来显示文件的原始文件名,还可以使用-n或者--show-number来显示文件的行数,如下截图:

$git blame --show-stats aa
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  1) The beginning is to learn git blame
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  2) the second to add some difference.
 ^2cae297 (xin          2013-06-02 17:56:14 +0800  3) ok, let's go ,you can do it !
 aba91773 (xin          2013-06-02 17:58:26 +0800  4)
 aba91773 (xin          2013-06-02 17:58:26 +0800  5)
 aba91773 (xin          2013-06-02 17:58:26 +0800  6)
 aba91773 (xin          2013-06-02 17:58:26 +0800  7) After first commit ,I want to add some charater to test git blame
 9db59f5a (xin          2013-06-02 18:09:21 +0800  8)
 9db59f5a (xin          2013-06-02 18:09:21 +0800  9)
 9db59f5a (xin          2013-06-02 18:09:21 +0800 10)
 9db59f5a (xin          2013-06-02 18:09:21 +0800 11) This is the third commit ,for testing -b option
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 12)
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 13)
 00000000 (Not Committed Yet 2013-06-02 18:25:21 +0800 14) this is the change of work directory.
 num read blob: 6
 num get patch: 3
 num commits: 3

我们还可以使用-p或者--porcelain让输出以更精美的形式出现,截图如下:

$git blame -p aa
 author xin
 author-mail <[email protected]>
 author-time 1370166974
 author-tz +0800
 committer xin
 committer-mail <[email protected]>
 committer-time 1370166974
 committer-tz +0800
 summary add the firse file aa
 boundary
 filename aa
         The beginning is to learn git blame
 2cae29731f13611e7ddba68ae444f37d45b8b979 2 2
         the second to add some difference.
 2cae29731f13611e7ddba68ae444f37d45b8b979 3 3
         ok, let's go ,you can do it !
 aba917735c7034255d6f340bd0ad384b1c7365ab 4 4 4
 author xin
 author-mail <[email protected]>
 author-time 1370167106
 author-tz +0800
 committer xin
 committer-mail <[email protected]>
 committer-time 1370167106
 committer-tz +0800
 summary the second commit
 previous 2cae29731f13611e7ddba68ae444f37d45b8b979 aa
 filename aa

下面是其中常用的参数:

(1)-t参数可以让时间以时间戳的形式显示。

(2)-l参数可以让其显示长传的哈希码,而不是哈希码的前几个字符。

(3)-s参数可以简化输出,不显示作者以及时间戳。

(4)-e参数输出user.email替换user.name。

(5)-w参数可以忽略空行的不同。

(6)-L  n,m参数可以查看指定的n行到m行的修改内容。



时间: 2024-10-07 19:29:54

辛星浅析git blame的使用的相关文章

辛星浅析git中的submodule

有时候,我们需要将一些通用的部分抽取出来做成一个公共库,它可以给别的工程使用,而公共代码库的版本管理是比较麻烦的.我们可以使用git中的submodule来做到这一点. 1.添加 为当前工程添加submodule,命令格式是:git   submodule   add   仓库地址    路径 在添加完成后,在当前工程路径下会生成一个名为".gitmodules"的文件,它记录了子模块的信息,添加完成之后,将子模块所在的文件夹添加到工程中即可. 2.删除 删除submodule,我们首

辛星浅析git中的代码撤销与回退

1.回退到最近一次提交的状态使用  git  reset  --hard   HEAD 命令,这里的--hard表示删除自从该次提交后所有的修改记录,未跟踪的文件除外,如果需要保留目前的修改,则执行git  reset  --soft  HEAD. 2.回退代码到某次指定的提交状态,我们使用git  reset  --hard  <hashcode> 命令,这里的hashcode是该次提交的哈希码.git没有办法回退单个文件到某次提交状态,如果确实需要这么做,那么应该先取得某次提交时该文件的内

辛星浅析git init中的--bare选项,也就是裸仓库

通常如果一个仓库作为远程仓库使用的时候,我们初始化的时候通常是git  init  --bare,首先解释一下这个bare,它翻译成汉语即"裸的",他之会生成一类文件,用于记录版本库历史记录的.git目录下面的文件,而不会包含实际项目源文件的拷贝,因此该版本库不能称为工作目录(working  tree). 当不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本记录文件就存放在.git目录下,而使用--bare选项时,就不再生成.git目录,而只是生成.g

辛星浅析git中查看某个文件的历史

有时候我们在比对代码的时候,会看到一些改动,但是不清楚这个改动的具体内容的话,我们通常可以通过如下步骤来执行: (1)使用git  log来查看某个文件的变化,需要注意的是这里我们只关注某个文件的变化,而不是整个git库,否则就无从看起了. 我们在git  log后面接文件名即可,范例如下: [email protected]:/root/xin# git log --pretty=oneline MessageItem.java 27209385caf678abe878375a470f4edd

辛星浅析git reset和git revert

很多时候,我们有了误操作,这个时候就需要回退功能的出现,我们可以使用git reset和git  revert这两个功能. git  reset是指将当前head的内容重置,不会留任何痕迹.比如git  reset  --hard   HEAD~3会将最新的3次提交全部重置,就好像没有提交过一样.而--soft和--mixed.--hard会分别重置working  tree和index.HEAD. git   revert是撤销某次提交,但是这次撤销也会作为一次提交进行保存.

辛星浅析git中的版本回退

首先需要说的就是commit  id,它和svn不同,git的commit id不是1,2,3...这种递增的数字,而是一个SHA1计算出来的一个非常大的数字,它用十六进制来表示,因为git是分布式的版本控制系统,所以就只能用这种方式了. 在git中,我们用HEAD表示当前版本,上一个版本就是HEAD^,上上个版本就是HEAD^^,如果我们前100个版本就是HEAD后面跟100个^,但是我们通常不这么写,我们通常写成HEAD~100. 而且我们回退使用git  reset命令,比如我们要回退到上

辛星浅析You don&#39;t have permission to access / on this server.的解决办法

通常我们会遇到"You don't have permission to access / on this server."的提示,从字面意思是说,我们没有访问本服务器的权限,那么它常见的问题又是什么呢? 第一个假如是虚拟主机,那么可能是虚拟主机配置的错误,我们在<VirtualHost>对里面配置的时候,在其子配置项中,我们在<Directory>中修改为如下即可: Order  allow,deny Allow  from all 第二个原因就是我们没有响应

辛星浅析tar命令的基本使用

我们通常使用tar命令来对文件或者目录进行打包或者压缩,可能朋友们刚接触的时候会有点晕,百度搜的时候就和查手册一样,不够通俗易懂,今天辛星就给朋友们用另一种方式去解决这个问题. 我们首先还是要对它的几个关键参数认识一下的: -c  表示创建一个打包文件,这里的c是create的首字母 -x   表示解包一个已经打包的文件 -t    表示查看一个tar包里面的文件 因此,c和x和t这三个参数只能存在一个,不能同时存在,因为我们不能在打包的同时又解包 然后就是两个常见的与压缩有关的参数: -z  

辛星浅析修改git中的默认编辑器

有时候,git使用的默认编辑器不是我们想要的编辑器,比如说我们在git  commit没有指定-m参数的时候自动进入的编辑器界面. 此时我们在.gitconfig的[core]段中加上editor=vim会变成vim编辑器.