啊!网站怎么挂了?!这行代码是谁写的?!
这种状况经常会发生,想要知道某个文件的某一行代码是谁写的吗?在Git中可使用git blame命令帮你找出来:
$ git blame index.html abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 1) <!DOCTYPE html> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 2) <html> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 3) <head> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 4) <meta charset="utf-8"> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 5) <title> 首页 </title> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 6) </head> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 7) <body> 657fce78 (Eddie Kao 2017-08-02 16:53:43 +0800 8) <div class="container"> 657fce78 (Eddie Kao 2017-08-02 16:53:43 +0800 9) </div> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 10) </body> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 11) </html>
这样就可以很清楚地看出来哪一行代码是谁在什么时候写的,而最前面看起来像乱码的文本,正是每次Commit的识别代码,表示这一行代码是在哪一次的Commit中加进来的。以这个例子来说,除了第8行和第9行的代码(657fce78),其他的代码都是在同一个Commit中加进来的(abb4f438)。
如果文件太大,也可以加上-L参数,只显示指定行数的内容:
$ git blame -L 5,10 index.html abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 5) <title> 首页 </ title> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 6) </head> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 7) <body> 657fce78 (Eddie Kao 2017-08-02 16:53:43 +0800 8) <div class="container"> 657fce78 (Eddie Kao 2017-08-02 16:53:43 +0800 9) </div> abb4f438 (Eddie Kao 2017-08-02 16:49:49 +0800 10) </body>
这样就只会显示第5~10行的信息。
如果使用SourceTree,可以在想查看的文件上右击,选择Blame Selected选项,如图5-27所示。
图5-27
然后就会进入图5-28所示的界面。
图5-28
谜之音
很多时候,git blame抓到的“凶手”大多都是自己!