查找问题的利器 - Git Blame

原文: http://gitbook.liuhui998.com/5_5.html

如果你要查看文件的每个部分是谁修改的, 那么 git blame 就是不二选择. 只要运行‘git blame [filename]‘, 你就会得到整个文件的每一行的详细修改信息:包括SHA串,日期和作者:

译者注: Git采用SHA1做为hash签名算法, 在本书中,作者为了表达方便,常常使用SHA来代指SHA1. 如果没有特别说明, 本书中的SHA就是SHA1的代称.

$ git blame sha1_file.c

...

0fcfd160 (Linus Torvalds  2005-04-18 13:04:43 -0700    8)  */

0fcfd160 (Linus Torvalds  2005-04-18 13:04:43 -0700    9) #include "cache.h"

1f688557 (Junio C Hamano  2005-06-27 03:35:33 -0700   10) #include "delta.h"

a733cb60 (Linus Torvalds  2005-06-28 14:21:02 -0700   11) #include "pack.h"

8e440259 (Peter Eriksen   2006-04-02 14:44:09 +0200   12) #include "blob.h"

8e440259 (Peter Eriksen   2006-04-02 14:44:09 +0200   13) #include "commit.h"

8e440259 (Peter Eriksen   2006-04-02 14:44:09 +0200   14) #include "tag.h"

8e440259 (Peter Eriksen   2006-04-02 14:44:09 +0200   15) #include "tree.h"

f35a6d3b (Linus Torvalds  2007-04-09 21:20:29 -0700   16) #include "refs.h"

70f5d5d3 (Nicolas Pitre   2008-02-28 00:25:19 -0500   17) #include "pack-revindex.h"628522ec (Junio C Hamano              2007-12-29 02:05:47 -0800   18) #include "sha1-lookup.h"

...

你也可以用"-L"参数在命令(blame)中指定开始和结束行:

$>git blame -L 160,+10 sha1_file.c

ace1534d (Junio C Hamano 2005-05-07 00:38:04 -0700       160)}

ace1534d (Junio C Hamano 2005-05-07 00:38:04 -0700       161)

0fcfd160 (Linus Torvalds 2005-04-18 13:04:43 -0700       162)/*

0fcfd160 (Linus Torvalds 2005-04-18 13:04:43 -0700       163) * NOTE! This returns a statically allocate

790296fd (Jim Meyering   2008-01-03 15:18:07 +0100       164) * careful about using it. Do an "xstrdup()

0fcfd160 (Linus Torvalds 2005-04-18 13:04:43 -0700       165) * filename.

ace1534d (Junio C Hamano 2005-05-07 00:38:04 -0700       166) *

ace1534d (Junio C Hamano 2005-05-07 00:38:04 -0700       167) * Also note that this returns the location

ace1534d (Junio C Hamano 2005-05-07 00:38:04 -0700       168) * SHA1 file can happen from any alternate

d19938ab (Junio C Hamano 2005-05-09 17:57:56 -0700       169) * DB_ENVIRONMENT environment variable if i

时间: 2024-10-10 10:01:16

查找问题的利器 - Git Blame的相关文章

查找问题的利器 - Git Bisect

假设你在项目的'2.6.18'版上面工作, 但是你当前的代码(master)崩溃(crash)了. 有时解决这种问题的最好办法是: 手工逐步恢复(brute-force regression)项目历史, 找出是哪个提交(commit)导致了这个问题. 但是 linkgit:git-bisect1 可以更好帮你解决这个问题: $ git bisect start $ git bisect good v2.6.18 $ git bisect bad master Bisecting: 3537 re

git小技巧:git blame && git show 查看某一行代码的修改历史

先查看某行代码由谁写的,在哪个commit中提交的: git blame file_name git blame -L 58,100 KeyboardActivity.java 其显示格式为: commit ID | 代码提交作者 | 提交时间 | 代码位于文件中的行数 | 实际代码 类似于下面这样: 这样,我们就可以知道commit ID了,然后使用命令:Git show commitID来看~ git小技巧:git blame && git show 查看某一行代码的修改历史

[Practical Git] Show who changed a line last with git blame

When working on a file, we often want to know who made certain changes last; we can use git blame to see details about the last modification of each line in a file. In this lesson, we show and example of using git blame to see who made the last chang

辛星浅析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 ^2

git用法大全

转载自实验楼,之前有更新过两篇git的文章,毕竟内容太少,而git还有很多更丰富的技能,在实验楼上有一系列全的教程,这里做一下备案.需要时查阅. Git 实战教程 目录 一.实验说明 二.git的初始化 1.Git 配置 三.获得一个Git仓库 1.Clone一个仓库 2.初始化一个新的仓库 四.正常的工作流程 1. 正常的工作流程 五.分支与合并 1.分支 2. 撤销一个合并 3.快速向前合并 六.Git日志 1.查看日志 2.日志统计 3.格式化日志 4.日志排序 七.小结 八.练习 一.实

Git 版本控制(命令行)

前言 git这个版本控制工具,早在两三年前我就开始使用了.不过后来换了新东家后,又开始变成了svn,最近又切成git了. 通过近期的使用,遇到了一些坑,遂引发此文,以作记录 issue:某个commit整体不要了,想重置?add多了,想撤销?某个文件有问题,想还原到某次commit时的状态?想push到另外的远程仓库?什么!这行代码是哪个鬼加进去的,引起了bug?咦,这个bug,在好几个版本都存在,是哪次commit引起的?- 本文都能找到答案 注:可以通过上面的目录,来选取自己感兴趣的内容,进

Git 中级用户的25个小贴士

原文链接:25 Tips for Intermediate Git Users 作者:Andy Jeffries 时间:2009年11月1日 更新:这篇文章最初是在 2009年11月 发布到我的博客,它一直没有更新--不过有许多人发现这篇文章很有用,所以我想保持下去.请不要评论说"这些已经不再是中级小贴士了". 我使用 git 大约 18 个月了,以为自己已经比较了解 git 了.但当我们请 GitHub 的 Scott Chacon 来 LVS 公司(博彩/游戏软件开发商)做一些培训

25个 Git 进阶技巧

我已经使用git差不多18个月了,觉得自己对它应该已经非常了解.然后来自GitHub的Scott Chacon过来给LVS做培训,而我在第一天里就学到了很多. 作为一个对git感觉良好的人,我觉得分享从社区里掌握的一些有价值的信息,也许能帮某人解决问题而不用做太深入研究. 基本技巧 1. 安装后的第一步 在安装好git后,你第一件该做的事是设置你的名字和电子邮箱,因为每次提交都要用到这些信息: $ git config --global user.name "Some One" $ g

Git 版本管理工具命令速查

转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释 git remote add origin [email protected]:ndshowgit push origin mast