您可以在裸回購庫上使用git ls-tree --full-tree -r HEAD
以獲取該回購庫中的所有文件,但我希望該列表用於特定提交。在特定提交下獲取裸露git文件夾中的文件樹
I.e.我想通過第一次提交提交來回顧一下repo commit,直到我進入HEAD並查看文件樹是如何進化的。我只關心文件和路徑,實際上我並不關心內容。
有沒有辦法在光禿禿的回購上做到這一點?我希望這是一個裸回購,因爲我們有一些非常大的回購,並且爲每個提交做結賬在CPU時間上花費太多。
您可以在裸回購庫上使用git ls-tree --full-tree -r HEAD
以獲取該回購庫中的所有文件,但我希望該列表用於特定提交。在特定提交下獲取裸露git文件夾中的文件樹
I.e.我想通過第一次提交提交來回顧一下repo commit,直到我進入HEAD並查看文件樹是如何進化的。我只關心文件和路徑,實際上我並不關心內容。
有沒有辦法在光禿禿的回購上做到這一點?我希望這是一個裸回購,因爲我們有一些非常大的回購,並且爲每個提交做結賬在CPU時間上花費太多。
當然,只需將HEAD
替換爲任何承諾或樹標識符,如SHA-1或gitrevisions
所允許的任何說明符。請使用git rev-list
。例如,從當前工作提交(HEAD
)回到根在每個合併之後只有第一次家長:
git rev-list --first-parent --topo-order HEAD | while read rev; do
git ls-tree --full-tree -r $rev
done
要通過同一組中的其他訂單修訂的運行,加--reverse
的參數git rev-list
。
如果你想在合併時關注所有父母,你可以簡單地省略--first-parent
。 --topo-order
限制將確保父代提交ID在所有子代之前(或在--reverse
之後)。如果沒有特定的排序,您將按提交日期順序提交提交(或按照--reverse
,轉發)。 (如果你要跟蹤樹的演變,但也想很好地處理合並,你可能需要一個更復雜的操作,因爲你有git rev-list
一起生成父和子提交ID,因爲即使是--topo-order
或其他一些將父母/子女關係保持在一起的排序標準,從扁平化的圖表中可以看出,合併發生的位置並不會很明顯,請仔細閱讀the git rev-list
documentation。使用--first-parent
簡化了工作,因爲它爲您提供了簡化,嚴格的父母/孩子訂購。)
嗯,這很奇怪。我以爲那是我正在嘗試的,而且並不奏效。那麼,它現在有效。謝謝。 –