2013-11-20 31 views
3

好的,所以我在git上。我注意到我的網頁佈局遍佈各處。該項目有一堆*.css文件(在同一回購的不同位置總共約8個)。我想檢查所有提交這些文件的分支我 - 在過去兩週內,檢查文件選擇何時發生變化

這可能嗎?

我知道一個單一的文件,我可以這樣做:

git log -p ./reports/my.css 

什麼是做它在不同的目錄中的所有css文件的最好方法。我走到這一步,最好是做這樣的事情:

git log --since=2.weeks --name-status | grep -B 8 "css" 

即我從過去兩週的grep的日誌,然後我拉出8條線之前,爲了確保我得到的文件並提交信息。

謝謝。

+0

只需列出所有這些。你可能有運氣使用''* .css''(注意引號) – knittl

回答

1

git log可以接收文件的列表,所以只給所有相關的文件作爲參數:

git log -p ./reports/my.css ./anotherdir/his.css ./thirddir/their.css 
2

這是一個除了提到git log確實需要多文件變量,並可以顯示另一種答案所有提交已經觸及這些文件的日誌。

如果你想在一個步驟調用此命令時,發現所有的* .css文件,然後使用以下find調用:

find . -iname '*.css' -exec git log --since=2.weeks --name-status {} +

在簡單的英語,這個命令找到與結尾的所有文件。 css,忽略大小寫,在當前工作目錄和所有子目錄中,並執行git log --since=2.weeks --name-status傳遞它作爲參數找到的所有文件名。

+0

super。只是想知道你能否在聲明中解釋{}和+的含義? –

+1

從查找手冊頁...'-exec命令{} + -exec操作的這種變體在所選文件上運行指定命令,但命令行是通過在末尾附加每個選定文件名來構建的;該命令的總調用次數將遠遠少於匹配文件的數量。命令行的構建方式與xargs構建其命令行的方式大致相同。命令中只允許有一個「{}」實例。該命令在起始目錄中執行 – whaley

相關問題