2010-10-06 146 views
14

我們有一個「中央」回購,用於部署到我們的開發服務器。我知道git log會向我顯示提交以及他們提交的日期/時間,但我希望看到提交何時被推回到回收站。任何方式來做到這一點?如何查看git回購的接收歷史記錄?

+0

我不知道任何內建行爲,但你可能可以用一個post-receive鉤子破解一個記錄器。 – Daenyth 2010-10-06 19:42:27

回答

20

Git的reflogs會記錄您指定的數據(日期和新提示提交)。

如果您的中央存儲庫是裸露的,則其引用日誌可能未啓用(創建裸存儲庫時默認未啓用它們)。這樣使他們:

git config core.logAllRefUpdates true 

你也應該考慮審查有關reflogs(見git-config(1),搜索「引用日誌」),其他配置選項:gc.reflogexpiregc.reflogexpireunreachable

您可能還希望啓用receive.denyDeletes(因爲刪除分支時刪除了引用日誌)。如果您只關心在特定分支上保留推薦日誌,那麼您可以使用接收或更新掛鉤實現您自己的預分支「拒絕刪除」(請參閱​​githooks(5))。

一旦啓用reflogs您可以查看它們的內容與任何
git reflog show branch-name
git log -g branch-name(或者可以與其他git的日誌選項組合)。

這仍然不會包含您可能需要的其他信息(例如,誰推新提示*),但它可能有幫助。
* 問題是,身份驗證系統(SSH,SSH + gitolite,HTTP,HTTP + git-http-backend等)通常不會將此信息傳遞到記錄新的reflog條目的級別;我記得一些組織(Gentoo?)正在探索一些有助於記錄這些信息的東西(因爲他們正在考慮遷移到Git),但我不記得這些細節)。

+2

完美。爲了補充一點,在運行'git log -g branch-name'時,它只會給出自該更改以來的更改次數(所以最新的是0,先前的是1等),但運行'git log -g - date = local branch-name'會給出一個日期。謝謝! – 2010-10-07 14:50:56

相關問題