← 上一章:【狀況題】檢視特定檔案的 Commit 紀錄 下一章:【狀況題】啊!不小心把檔案或目錄刪掉了… →
【狀況題】等等,這行程式誰寫的?
啊!網站怎麼掛了?!這行程式碼是誰寫的?!
這種狀況應該常常發生,想要知道某個檔案的某一行是誰寫的嗎?在 Git 可使用 git blame
指令幫你抓出兇手:
$ git blame index.html
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 1) <!DOCTYPE html>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 2) <html>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 3) <head>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 4) <meta charset="utf-8">
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 5) <title>首頁</title>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 6) </head>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 7) <body>
7dc9302e (Eddie Kao 2019-05-28 16:00:49 +0800 8) <div class="container">
7dc9302e (Eddie Kao 2019-05-28 16:00:49 +0800 9) </div>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 10) </body>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 11) </html>
這樣可以很清楚的看得出來哪一行是誰在什麼時候寫的,而最前面看起來像亂碼的文字,正是每次 Commit 的識別代碼。表示這一行是在哪一次的 Commit 裡。以這個例子來說,除了第 8 跟第 9 行之外(7dc9302e
),其它的都是在同一個 Commit 裡加進來的(6783cc21
)。
如果檔案太大,也可加上 -L
參數,只顯示指定行數的內容:
$ git blame -L 5,10 index.html
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 5) <title>首頁</title>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 6) </head>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 7) <body>
7dc9302e (Eddie Kao 2019-05-28 16:00:49 +0800 8) <div class="container">
7dc9302e (Eddie Kao 2019-05-28 16:00:49 +0800 9) </div>
6783cc21 (Eddie Kao 2019-05-28 16:00:35 +0800 10) </body>
這樣就只會顯示第 5 ~ 10 行的資訊。
如果使用 SourceTree,可在你想檢視的那個檔案上按滑鼠右鍵:
選擇「Annotate Selected」,就可以看到這個畫面:
基本上看到的資訊跟使用指令差不多。
謎之音
很多時候,
git blame
抓到的兇手大多都是自己!
Comments