2013-05-27 45 views
0

我在特定的文件上試用git blame。如果我理解正確,它會顯示對該文件所做的所有修改以及由誰執行。
但是,當我運行命令的結果不會有序地出現。我必須搜索條目以找出哪些是日期的最後更改。
報告結果的順序是什麼?我怎樣才能根據修改的順序得到報告?找不到git blame的報告

回答

6

git blame <filename>顯示對於文件中的每個單獨的行,上次提交以更改該行。

要獲得觸摸文件的提交列表,請使用git log <filename>,可能還有-p也可以看到更改。

+0

我認爲每個提交都與多個文件有關。代表特定快照的文件。因此'git log'表明提交不能顯示單個文件的歷史記錄。因此,提交是文件的快照,但我們可以擁有單個文件的歷史記錄?我在這裏有意義嗎?我是Git – Cratylus

+1

@Cratylus的新手如果你給'git log'指定一個文件名,它會忽略文件沒有被改變的提交。用'-p',它會過濾它所顯示的變化,這樣你就只能看到那個文件中發生了什麼變化。 整個歷史仍然存在,每個提交都與其所有文件相關聯;只有輸出限於單個文件的歷史記錄。 –

3

git blame「使用上次修改該行的修訂版的信息在給定文件中註釋每行。」輸出按照文件中的行進行排序。這是一個典型的輸出:

b62460a4 base.scm  (GoZoner 2011-01-11 17:44:21 -0800 1) ;-*- Mode: scheme -*- 
b62460a4 base.scm  (GoZoner 2011-01-11 17:44:21 -0800 2) ; 
b62460a4 base.scm  (GoZoner 2011-01-11 17:44:21 -0800 3) ; File: base.scm 
b62460a4 base.scm  (GoZoner 2011-01-11 17:44:21 -0800 4) ; Date: Tue Jan 11 2011 
... 
528c5424 base.scm  (GoZoner 2012-04-21 10:01:14 -0700 26) ; ______________________________________________ 
b62460a4 base.scm  (GoZoner 2011-01-11 17:44:21 -0800 27) 
499ff1ef base.scm  (GoZoner 2010-10-21 22:08:30 -0700 28) (library (quirk base) 
d1376b80 base.scm  (GoZoner 2011-01-01 16:31:00 -0800 29) (export ignore identity always compose complem 
6150ec79 base.scm  (GoZoner 2013-04-22 08:02:43 -0700 30)  iota choose choose-by split substitute de 
9fc800e6 base.scm  (GoZoner 2010-10-28 07:36:01 -0700 31)  any? every? count index while until repea 
499ff1ef base.scm  (GoZoner 2010-10-21 22:08:30 -0700 32)  member? associate 
93933128 base.scm  (GoZoner 2010-10-22 01:03:43 -0700 33)  intersection union difference 
3e3f47ee base.scm  (GoZoner 2010-11-20 15:59:38 -0800 34)  list-ref-at list-set-at list-ref-last lis 
3e3f47ee base.scm  (GoZoner 2010-11-20 15:59:38 -0800 35)  vector-ref-at vector-index 
5eae93ea base.scm  (GoZoner 2010-10-23 10:30:37 -0700 36)  symbol-append 

您可以看到:commit,filename,user,date,lineno和每行的內容。

如果你想要的東西按日期分組,你有兩個選擇:

  • git log -- <filename>顯示按時間倒序 順序提交
  • git show <commit> -- <filename>顯示更改文件 一個指定的提交。