命令行 - 如何顯示git歷史記錄的前10個

分享于 

4分钟阅读

ubuntu

  简体

問題:

我找到了這個命令,從git歷史中獲取前10個最大文件https://github.com/18F/C2/issues/439)


git verify-pack -v .git/objects/pack/pack-7b03cc896f31b2441f3a791ef760bd28495697e6.idx 


| sort -k 3 -n 


| tail -10



它現在顯示如下內容:


32f0dac6ee67325ca12b9c03279ee2dbc7790567 blob 12732444 11425432 1091676437


c63c2851049c51eabbcd54cb46cad367d4e0d593 blob 14368670 12189261 246241495



這些數字代表什麼?文件大小是多少?


答案1:

為了減少文件使用的空間,git packs對象存儲在存儲庫中到一個.pack文件中,這個包文件包含實際的git對象,.idx包含用於快速定位包文件中對象的索引。


$ git verify-pack -v .git/objects/pack/pack-7b03cc896f31b2441f3a791ef760bd28495697e6.idx 



上面的命令讀取給定的.idx文件,並用相應的包文件進行驗證,使用-v可以得到詳細的輸出。

輸出中的第三列是對象的大小,使用 sort -k 3 -n 我們將使用第3列(基於大小)對輸出進行數字排序,並使用tail -10裁剪出最大的10個。

要從它哈希值中獲取文件的名稱:


$ git ls-tree -r HEAD | grep HASH



要獲取所有名稱的列表:


$ git verify-pack -v .git/objects/pack/pack-1daab5282d01ab18db98e21a985eb2d288f7faa0.idx | sort -k 3 -n | tail | cut -f1 -d' ' | while read i; do git ls-tree -r HEAD | grep "$i"; done



100644 blob 6209b3840fa470a534e670cff93bce698ba60819 .bashrc


100644 blob 1131e7127cb2cf6c1f854f728a1794262cdf85f6 .vimrc


100644 blob a249a5ae9b33553f4484da42a019ed14e5f44e21 .vim/colors/clrs.vim


100644 blob f329f223953827e59954f67ad4d76568b6dd894e .config/openbox/rc.xml



閱讀更多:https://www.tecmint.com/rsnapshot-a-file-system-backup-utility-for-linux/

$ git verify-pack --help 

解壓縮Git packfiles

Git內部-打包文件

Git-從SHA1中查找文件名


答案2:

下面是使用git ls-tree sub命令的另一個整潔的解決方案:


$ git ls-tree -rl HEAD | sort -k4 -n | tail | awk '{print $4, $5}' |


numfmt --to=iec-i



4.0Ki .bashrc


4.0Ki .config/conky/conky.conf


4.5Ki .config/rofi/config.rasi


5.4Ki .vim/notes


7.2Ki .config/tint2/tint2rc


7.5Ki .bash_functions


7.5Ki .vimrc


19Ki .vim/colors/clrs.vim


38Ki .config/openbox/rc.xml


63Ki .config/ipfilter.dat



  • -r遞歸列出文件
  • -l顯示blob (文件)條目的對象大小
  • sort -k4 -n基於第四列的數字排序
  • tail剪切了最後10個項目
  • 使用awk只將第四列和第五列輸出


  • 相关文章